首先,我要感谢所有帮助我理解规范化以及我应该如何构建数据库的人。
现在,我还有一些最后的问题......
表的链接实际上是如何工作的?
假设您有三个表:
CATEGORY TABLE:
cat_id (PK) -> 1
cat_name -> cars
CATEGORY_OPTIONS TABLE:
cat_opt_id (FK) -> 1
cat_id (FK) -> 1
option_name -> year
CATEGORY_OPTIONS_VALUES TABLE:
cat_opt_val_id (PK) -> 1
cat_opt_id (FK) -> 1
value -> 1999
基本上,值应该如下所示:
CATEGORY
(1, cars)
(2, MC)
CATEGORY_OPTIONS
(1, 1, year)
(2, 1, fuel)
(3, 2, type)
CATEGORY_OPTIONS_VALUES
(1, 1, 2010)
(2, 1, Petrol)
(3, 2, Cross)
我上面的设置是否正确?
我将如何搜索这些,逻辑是如何构成的?
我想我需要来自 PHP 的查询示例(SELECT 等)
假设你想搜索一个CAR -> year=2010, fuel=PETROL 那么怎么查询呢? 并说你想搜索汽车 -> fuel=PETROL, year=anything
最后,我应该对这些字段中的任何一个使用 AutoIncrement 吗?什么时候使用 AI?
谢谢
PS:有关更多信息,请查看此问题: Can this MySQL db be improved or is it good as it is?
最佳答案
您需要 SQL 连接。表链接是一种完全不相关的技术,与您要实现的目标无关(有关详细信息,请参阅 MERGE 引擎上的 MySQL 文档)。一般:
SELECT f.name, b.value
FROM foo f
LEFT JOIN bar b ON b.foo_id = f.id
WHERE f.age > 10
HAVING b.value IS NOT NULL
为了了解连接是如何执行的,您必须了解数据库引擎如何处理查询 - 特别是 ON、WHERE 和 HAVING 子句中条件的重要性,它们都适用于不同的阶段。
关于php - MySQL 链接表;一些最后的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2101102/