0

这个问题可能会自己回答,但它也是最佳实践的问题。

我正在设计一个允许用户(公司)创建帐户的应用程序。这些用户被放置在表“Shop_table”中。现在每个商店都有动态数据,但是每个商店的表格都是相同的,例如shop_employees, shop_info, shop_data

为每个商店设置一个特定的表会更有效,还是我只是通过商店 ID 链接他们的数据。

例如:

shop: Dunkins with id:1 
shop: Starbucks with id:2

邓肯斯会不会有自己的dunkins_shop_employees, dunkins_shop_info,dunkins_shop_data桌子和星巴克有自己的starbucks_shop_employees, starbucks_shop_info,starbucks_shop_data

或者我会有一个表 shope_employeesshop_infoshop_data链接 id 1 或 2,等等。

4

2 回答 2

0

你应该只有一张桌子(每个shop_info等......)

创建类似的表是维护的噩梦。您将需要创建类似的外键、类似的约束、类似的索引等。

如果您关心的是隐私,这应该在您的应用程序中加以控制。您的应用程序应始终根据谁登录/查询添加“WHERE”子句。

如果您绝对需要 - 您可以创建 where 子句作为 shop_id 的视图。您只能在视图上向不同的人授予权利。这只有在您有一个大客户想要一些 SQL 级别的查询能力时才有意义。

于 2012-05-17T23:25:53.077 回答
0

绝对是每个实体的一个表,其中包含一个用于标识公司的字段。

如果所有公司都有相同的信息,则无需为每个公司创建表,如果您这样做了,您的查询将成为一场噩梦。

您是否真的需要大量 UNION 查询来获取跨公司的聚合数据?一旦添加了另一家公司(因此添加了多个表),您还必须修改数据库中的所有查询。

独立定义您的表,为您要存储的实体建模,不要考虑它们属于谁。

于 2012-05-17T23:07:16.090 回答