我的房地产应用程序有一个数据库表,它保存用户的查询(查询)。此表保存有关特定房地产查询的所有信息。
数据库表如下所示:
CREATE TABLE IF NOT EXISTS `queries` (
`id` bigint(20) NOT NULL auto_increment,
`category_id` int(10) NOT NULL,
`serial` varchar(30) NOT NULL,
`minBudget` int(11) NOT NULL,
`maxBudget` int(11) NOT NULL,
`city_id` int(10) NOT NULL,
`area_id` int(10) NOT NULL,
`locality` varchar(100) NOT NULL,
`status` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在
city_id
和area_id
中,可能存在需要存储多个id的情况;例如,10、12、20、50等等。我应该如何将它存储在数据库中?
我是否应该使用
varchar
数据类型并将其保持为定义了分隔符的字符串,然后在数组中获取值? 最佳答案
如果这些是另一个表的id,则不要使用varchar。使用多对多表将它们映射到一起。
CREATE TABLE IF NOT EXIST `query_cities` (
`id` bigint(20) NOT NULL auto_increment,
`query_id` bigint(20),
`city_id` bigint(20)
)
CREATE TABLE IF NOT EXIST `query_areas` (
`id` bigint(20) NOT NULL auto_increment,
`area_id` bigint(20)
)
这比把东西塞进varchar要干净得多-例如,它允许您说:
SELECT c.city_name, c.state, c.whatever FROM queries q
JOIN cities c ON (q.city_id = c.id) WHERE q.id = ?
编辑:嗯,我是瘸子,不包括外键,但你明白了。
关于mysql - 在数据库表中存储多个ID的理想解决方案是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4882967/