Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Database design 相册的多个所有者-架构问题_Database Design_Schema_Photos - Fatal编程技术网

Database design 相册的多个所有者-架构问题

Database design 相册的多个所有者-架构问题,database-design,schema,photos,Database Design,Schema,Photos,如果相册属于某个用户、事件、组、网络或我希望支持的页面,那么我将如何为这些相册创建一种关系?如果可能,甚至可以支持多个所有者 一种方法是在相册表中为这些列设置列,其中一列具有FK ID,其余列为空。但问题是,当我添加更多的所有者类型时,我必须不断修改表以添加更多的列 另一种方法是为这些所有者类型中的每一种拥有单独的照片表 这些方法都不能很好地扩展。从一个表中拥有不同所有者类型的相册的任何其他方法都将具有较小的连接,并且易于查询,因为读取性能是我的首要要求吗 平台是MySQL/PHP。创建一个包含

如果相册属于某个用户、事件、组、网络或我希望支持的页面,那么我将如何为这些相册创建一种关系?如果可能,甚至可以支持多个所有者

一种方法是在相册表中为这些列设置列,其中一列具有FK ID,其余列为空。但问题是,当我添加更多的所有者类型时,我必须不断修改表以添加更多的列

另一种方法是为这些所有者类型中的每一种拥有单独的照片表

这些方法都不能很好地扩展。从一个表中拥有不同所有者类型的相册的任何其他方法都将具有较小的连接,并且易于查询,因为读取性能是我的首要要求吗


平台是MySQL/PHP。

创建一个包含三列的表,即album FK、owner FK和owner type,其中owner type是用户、偶数、组等的可枚举类型。

创建一个包含三列的表,album FK、owner FK和owner type,其中owner type是用户、偶数、组的可枚举类型,等等。

在概念数据模型而不是纯物理模型中思考您的问题。如果你做OO工作,那也没关系。

半圆是一个继承运算符。所以事件、用户、网络、页面都从所有者继承

将其生成到物理模型时,将使用这些设置

这样,您就可以得到一个包含所有内容的表,其中包含一张照片和所有公共属性。然后,每个子表将从父表继承PI,并具有特定于它的属性。照片表的FK将转到所有者表


一张照片的多个所有者的未来目标将从照片表上的所有者ID FK更改为所有者和照片之间的多:到:多映射表。如果您使用这些结构,这将非常容易。

在概念数据模型中思考您的问题,而不是纯粹的物理模型。如果你做OO工作,那也没关系。

半圆是一个继承运算符。所以事件、用户、网络、页面都从所有者继承

将其生成到物理模型时,将使用这些设置

这样,您就可以得到一个包含所有内容的表,其中包含一张照片和所有公共属性。然后,每个子表将从父表继承PI,并具有特定于它的属性。照片表的FK将转到所有者表


一张照片的多个所有者的未来目标将从照片表上的所有者ID FK更改为所有者和照片之间的多:到:多映射表。如果您使用这些构造,就很容易了。

这就是问题所有者FK-它将FK到哪里?用户表、事件表、页面表等?据我所知,一个表中只能FK到一个列,或者可以从一个列FK到多个表?每个表一个FK。代码将根据类型决定应该设置哪一个。正如JOTN所说。例如,如果一个相册归用户1所有,而另一个相册归组1所有,则两个记录的所有者FK均为1。但是,第一个字段的类型对应一个用户,第二个字段对应一个组。在?:密钥所有者、约束所有者、外键所有者引用中有什么内容?在更新时,不能将约束用于此方法。请参阅以获取更详细的答案,以及上述解决方案的可能替代方案。这就是问题所有者FK-它将FK转移到哪里?用户表、事件表、页面表等?据我所知,一个表中只能FK到一个列,或者可以从一个列FK到多个表?每个表一个FK。代码将根据类型决定应该设置哪一个。正如JOTN所说。例如,如果一个相册归用户1所有,而另一个相册归组1所有,则两个记录的所有者FK均为1。但是,第一个字段的类型对应一个用户,第二个字段对应一个组。在?:密钥所有者、约束所有者、外键所有者引用中有什么内容?在更新时,不能将约束用于此方法。请参阅以获得更详细的答案,以及上述解决方案的可能替代方案。