Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 针对多个服务的MySQL数据库设置_Php_Mysql_Sql_Database_Database Design - Fatal编程技术网

Php 针对多个服务的MySQL数据库设置

Php 针对多个服务的MySQL数据库设置,php,mysql,sql,database,database-design,Php,Mysql,Sql,Database,Database Design,我正在开始一项新的业务,提供大约30种不同的服务。我正试图找出使用MySQL和PHP“轻松访问”所有30个服务的最佳方法。在这一点上,我正在建立我的数据库,我想确保我走在正确的方向上。这是我到目前为止提出的概念: Create Table customers (customer_id) Create Table orders (order_id, customer_id, product_id) Create Table logo_design (logo_id, customer_id, or

我正在开始一项新的业务,提供大约30种不同的服务。我正试图找出使用MySQL和PHP“轻松访问”所有30个服务的最佳方法。在这一点上,我正在建立我的数据库,我想确保我走在正确的方向上。这是我到目前为止提出的概念:

Create Table customers (customer_id)
Create Table orders (order_id, customer_id, product_id)
Create Table logo_design (logo_id, customer_id, order_id, product_id)
Create Table web_design (web_id, customer_id, order_id, product_id)
所以我的想法是,对于每个新客户,他们都会被分配一个唯一的客户ID。这个ID将在他们购买的每项服务中保留。我最难过的是,一个客户订购了3种不同的服务。我如何显示他们购买的3项服务,而不必进行一百万次不同的循环或验证检查?为了方便访问,连接所有表的最佳方法是什么


非常感谢您的建议

关系数据库通常在类似于表的客户和类似于表的服务之间有一个表。可以称之为客户服务

它只是掌握了客户和他们想要的服务的关键

customerId 1, serviceId 1
customerId 1, serviceId 2
customerId 1, serviceId 3
在您的示例中,这个中间表中有三行,以反映他们想要的三个服务

customerId 1, serviceId 1
customerId 1, serviceId 2
customerId 1, serviceId 3

在我看来,您似乎希望加入表并按某个客户ID进行筛选。请看一下此示例以开始:

SELECT *
FROM   customers AS c
       INNER JOIN orders AS o
           ON c.customer_id = o.customer_id
WHERE c.customer_id = CustomerIDGoesHere
您可以加入任意多个表

FROM table1
     JOIN table2
         ON table1.column = table2.column
     JOIN table3
         ON table2.column = table3.column
     JOIN table4
         ON table1.column = table4.column

当每个服务具有相同的基本列时,为什么要为它们创建单独的表?为什么没有一个带有“type”列的表?这将极大地简化这一过程。@Ilion,原因是每个服务中存储的信息不同,所以我认为最好为每个服务提供单独的表。我在帖子中给出的示例只是连接所有表的方法。每个表中存储的信息将比我显示的多得多。我是不是漏掉了你说的话?我不这么认为,但当你提供的东西不一样时,很难就你的结构向你提供建议。好吧,我理解。比如说,我想拉客户id 10的所有订单。并且说由于某种原因,该客户订购了全部30项服务。我必须联接所有30个表吗?不,订单表中具有客户id的所有30行都将显示,以及客户表中的任何信息。只需连接一次表并指定所需的数据。在这种情况下,您的意思是希望加入客户和订单,并显示特定客户ID的所有行。请尝试将一些数据放入表中,并播放一段视频。谢谢您的示例!。。。现在我想从3张订单中检索信息。假设我想获取为产品id 2输入的名称和姓氏。从与某个客户id关联的订单表中选择所有行后,我将如何执行此操作?更新的示例显示如何从联接表中选择特定列customer\u ordered\u services表与我的订单表相同是否正确?是的,如果product\u id链接到logo\u id或web\u id。我不确定为什么product\u id在这些表中