我在建模公司与供应商和客户之间的关系时遇到了问题。基本上在我的系统中,供应商和客户也是公司,所以我制定了这个模式:
table.company:
id
name
//other fields
table.company_suppliers:
company_id FK table.company.id
supplier_id FK table.company.id
table.company_clients:
company_id FK table.company.id
client_id FK table.company.id
这可以吗?
答案 0 :(得分:1)
我只会使用一个包含所有公司的表和一个位字段(由实例供应商调用),它会告诉您哪些也是供应商。
Company
Id
Name
IsSupplier (bit)
Fk_IdSupplier --it will relate this supplier to a company on the same table
或者您可以创建一个联结表(多对多)
Company
Id
Name
IsSupplier (bit)
CompanySupplier
fk_IdCompany
fk_IdSupplier
答案 1 :(得分:0)
您的基本见解是正确的 - 您不需要无关的客户和供应商表。但是你的身份证号太多了。
create table companies (
company_id integer primary key,
company_name varchar(35) not null
);
create table suppliers (
supplier_id integer primary key references companies (company_id)
-- Other supplier columns go here.
);
create table clients (
client_id integer primary key references companies (company_id)
-- Other client columns go here.
);
如果您使用的是MySQL,则需要稍微调整一下语法。 MySQL不支持声明主键和外键的所有标准SQL语法。