gpt4 book ai didi

MySQL数据库设计: multiple values in the same field

转载 作者:行者123 更新时间:2023-11-29 09:03:20 25 4
gpt4 key购买 nike

我需要在 3 列上创建索引:

`gender` tinyint(1) NOT NULL default '0',
`age` tinyint(2) NOT NULL default '0',
`is_looking_for` varchar(30) NOT NULL default ''

问题是第三列是 VARCHAR 并且该索引将不会被使用。我无法将其变为 INT。在此约会网站中创建个人资料的每个用户都会回答问题“我正在寻找..”,并且她/他可以选择多个选项,例如,
寻找男性
寻找女性或情侣(女性+女性)
寻找男性或女性,情侣(男+女)

现在我以这种方式将此信息存储在 VARCHAR (is_looking_for) 字段中:

1,3,5

MySQL 查询如下所示:

select from profiles where gender='$gender' and age between $minage and $maxage 
and is_looking_for LIKE '%$lookingfor%';

这个查询非常糟糕,但我不知道如何解决这个问题。我不想为每个性别选项创建不同的列 - 男性、女性、情侣(m+f)、情侣(f+f)等,因为这样我需要创建多个索引 - 为每个性别创建一个单独的索引:

KEY `gender` (`gender`,`age`,`female`)
KEY `gender_1` (`gender`,`age`,`male`)
KEY `gender_2` (`gender`,`age`,`couple_male_female`)

等等

我有一个想法,为每个可能的组合分配一个唯一的数字,然后将该数字存储在 INT 字段中,但我放弃了,因为它太困难了。

可以帮助别人吗?谢谢。

最佳答案

规范您的设计。创建一个单独的表,列出所有“正在寻找”的变量,每个变量都有自己的唯一 ID。

1. looking for male
2. looking for female
3. looking for male+female
4. looking for ...

然后另一个表将这个新表链接到您的约会表:

date_id    looking_for_id
69 2
69 4

这意味着约会#69正在寻找女性,或者......

关于MySQL数据库设计: multiple values in the same field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com