这个问题可能会自行解决,但这也是最佳实践的问题。
我正在设计一个允许用户(comapnies)创建帐户的应用程序。这些用户被放在“Shop_table”表中。现在每个商店都有动态数据,但每个商店的表格都相同,例如shop_employees
,shop_info
,shop_data
。
为每个商店设置一个特定的表格会更有效吗?或者我只是通过商店ID链接他们的数据。
例如:
shop: Dunkins with id:1
shop: Starbucks with id:2
dunkins会有自己的dunkins_shop_employees
,dunkins_shop_info
,dunkins_shop_data
表格
和星巴克有自己的starbucks_shop_employees
,starbucks_shop_info
,starbucks_shop_data
或者我会有一个表shope_employees
,shop_info
,shop_data
和ID为1或2的链接等。
答案 0 :(得分:0)
每个实体肯定有一个表,其中包含一个用于标识公司的字段。
如果所有公司都拥有相同的信息,则无需为每个公司创建表格,如果您这样做,您的查询将成为一场噩梦。
您是否真的想要加载UNION查询以获取跨公司的任何汇总数据?只要添加了另一家公司(以及多个表),您还必须在数据库中修改所有查询。
独立定义表格,为要存储的实体建模,不要考虑他们属于谁。
答案 1 :(得分:0)
你应该只有一个表(每个shop_info
等等。)
创建类似的表是维护的噩梦。您将需要创建类似的外键,类似的约束,类似的索引等。
如果您的担忧是隐私,则应在您的申请中加以控制。您的应用程序应始终根据登录/查询的人员添加“WHERE”子句。
如果你绝对需要 - 你可以创建where子句为shop_id的视图。您只能在视图上为各种人提供权限。只有当你有一个想要一些SQL级查询能力的大客户时,这才有意义。