使用一个表或多个表用于多个客户端软件系统?

时间:2012-05-17 22:57:52

标签: database relational-database

这个问题可能会自行解决,但这也是最佳实践的问题。

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

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

例如:

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

dunkins会有自己的dunkins_shop_employeesdunkins_shop_infodunkins_shop_data表格 和星巴克有自己的starbucks_shop_employeesstarbucks_shop_infostarbucks_shop_data

或者我会有一个表shope_employeesshop_infoshop_data和ID为1或2的链接等。

2 个答案:

答案 0 :(得分:0)

每个实体肯定有一个表,其中包含一个用于标识公司的字段。

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

您是否真的想要加载UNION查询以获取跨公司的任何汇总数据?只要添加了另一家公司(以及多个表),您还必须在数据库中修改所有查询。

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

答案 1 :(得分:0)

你应该只有一个表(每个shop_info等等。)

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

如果您的担忧是隐私,则应在您的申请中加以控制。您的应用程序应始终根据登录/查询的人员添加“WHERE”子句。

如果你绝对需要 - 你可以创建where子句为shop_id的视图。您只能在视图上为各种人提供权限。只有当你有一个想要一些SQL级查询能力的大客户时,这才有意义。