我正在竞选公职,并创建了一个网络应用程序,用于跟踪我在家中向选民敲门的情况。该数据库包含一个名为的表voters
,其中包含有关我社区中选民的所有必要信息。我正在使用 mysql。
我想添加一个新功能来跟踪我的竞选活动的捐助者。并非所有这些捐助者都住在社区,也不在我竞选公职的地区投票。我不需要为这些人跟踪与我为选民所做的相同类型的信息,因此我将这些人放入一个名为的表中nonvoters.
现在,我voters
表中的个人也可以进行捐赠,我也想跟踪这些人。
最后,我还想跟踪组织的捐赠,因此我还需要一个organizations
表来存储有关组织的信息。
为了跟踪来自选民、非选民和组织的捐赠,我想建立一个名为donations.
该表的新表,该表将包含有关每笔捐赠的适当详细信息。
但我不确定其最好的结构是什么样的连接donations
表的voters
,nonvoters
和organizations
表应该是。如果我donor_id
在表中创建一个名为的列以将其键入捐赠者信息,则无法知道该 ID 指的是哪个表。那么我是否设置三列,nonvoter_id
,voter_id
和org_id
并根据捐赠者是否是选民将 ID 插入适用的列中?这看起来很奇怪。
或者,我可能会在三个表中的每一个中创建一个新列,称为donor_id
我可以用来将我的数据链接到捐赠表。如果我走这条路,似乎我必须做一些幕后工作,以确保donor_id 是唯一的,并且与捐赠表中的数据相关联。
或者也许还有其他我不熟悉的方法。任何指导表示赞赏。
它应该是单独的查找表,还是我可以使用一个带有额外列的表来确定它是成分还是配方类别?这会影响优化或查询速度吗?
如果单表大约有 100 条记录;分隔的表是 5 和 95。该表将在同一个查询中出现两次以上。
我测试了相关问答关系表中的想法,内容相同,自定义解决方案。在前端和内务处理方面更容易处理数据,但如果数据库增长,数据完整性可能会成为一个问题。
我一直在测试这两种解决方案,但由于记录太少,我看不到任何性能改进或损失。此外,在构建前端时,使用一个模型和一个列比使用 2 个模型更容易,但这是一个小问题。
Stack Overflow 上的相关问答:一个查找表还是多个查找表?
我正在尝试设计数据库表来跟踪最终用户上传的文件。
文件可以在不同的上下文中上传。
每个上下文都是一个不同的表。
举个例子:
这个(人为的)场景中的实体/表是:
Employees (Id, Name)
Expenses (Id, Date, RequestedRefund, RequestedByEmployeeId)
Pets (Id, Name, Type, BelongsToEmployeeId)
我已经有一个名为的表Files
,用于跟踪有关文件本身的信息:
Files (Id, Name, Size, Extension, Folder)
我的问题是关于如何根据文件记录映射费用收据上传和宠物照片上传。我知道我可以通过两种方式做到这一点:
有一个通用映射表:GenericFileMap (FileId, ContextId, Type)
where
FileId
是文件记录的id ContextId
是我试图检索的上下文记录的 ID Type
是描述上下文本身的字段 在这种情况下,我会像这样获取员工的所有费用收据:
SELECT *
FROM Employee e
INNER JOIN Expenses ex ON e.Id = ex.RequestedByEmployeeId
INNER JOIN GenericFileMap g ON g.ContextId = ex.Id AND g.Type = 'expense'
INNER JOIN Files f ON g.FileId = f.Id
Run Code Online (Sandbox Code Playgroud)
每个实体/上下文表都有单独的映射表: …