php - MySQL 链接表;一些最后的问题

标签 php sql mysql database search

首先,我要感谢所有帮助我理解规范化以及我应该如何构建数据库的人。

现在,我还有一些最后的问题......

表的链接实际上是如何工作的?

假设您有三个表:

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/

相关文章:

php - UPDATE 语句不起作用,但适用于 phpMyAdmin 和实时主机

sql - 如何在 PostgreSql 中从秒获取年、月、日?

mysql - SQL - 内存中的计数

php - 如何使用 MySQL 根据多个 id 从表中获取值

php - 读取和写入 php 文件

php - 修改后的 PHP get_meta_tags 不适用于某些 URL

php - Symfony2 在一个表单中同一类的多个实体

php - WordPress:使用排队加载多个脚本

php - 如何在 PostgreSQL 中将列设置为常量字段?

php - MySQL 根据现有值插入选择