【发布时间】:2011-07-20 01:12:43
【问题描述】:
我必须为一个已经很乱的系统添加一些功能,我不想让事情变得更糟。这家商店不太重视适当的设计,但我这样做是为了寻求妥协。
他们希望添加向数据库中的各种实体添加文件附件的功能,但文件将存储在文件系统中。他们想要附加文件的实体(一对多)是,他们希望在数据库中考虑每个附件(指针文件名,root_mount_point 是一个动态参数。我将如何保持同步是我的下一个噩梦。但我正在为客户、帐户、供应商或发票的一对多附件的“多”表使用什么而苦恼。
create table client {
client_id char(11) not null,
...
}
create table account {
client_id char(11) not null,
account_number char(22) not null,
...
}
create table vendor {
client_id char(11) not null,
account_number char(22) not null,
vendor_number char(15) not null,
...
}
create table invoice {
client_id char(11) not null,
account_number char(22) not null,
vendor_number char(15) not null,
invoice_number char(22) not null,
invoice_date datetime not null (yes this is part of PK)
...
}
随着您的努力,每一个都是一对多的。
我正在考虑为“file_attachment”表做这样的事情,该表可以是四个实体中的任何一个的多个表,具体取决于哪些列是空的。如果 Invoice cols 为 null,则附件是供应商等。
create table NEW_ENTITY_ATTACHMENT {
attach_id char(11) not null (dummy key, but keeping their char 11 standard),
attach_status_cd char(1) not null, ( "A"ctive or "D"eleted ) ,etc.
attach_status_date datetime not null, (they want complete history, soft deletes, and restores)
client_id char(11) not null,
account_number char(22),
vendor_number char(15),
invoice_number char(22),
invoice_date datetime,
attachment_filename char(blah blah),
..
..
blah
}
所以前三列是必需的,client_id 是必需的,帐户、供应商、发票是可选的,具体取决于附件存储的级别。
我的想法是否偏离了这里,每个实体是否应该有很多表(例如客户附件、帐户附件、供应商附件、发票附件?如果这是他们不想听到的答案,所以我被搞砸了。
我不会问太多问题,但非常感谢任何建议。请记住,这个客户只是想完成他们认为这是一个一到两天的项目,包括数据模型、GUI 和后端。如果重要的话,那就是 Sybase ASE15。
提前致谢。 回复
【问题讨论】:
标签: database database-design relational-database normalization sap-ase