公司,供应商和客户的有效架构?

时间:2013-06-14 13:05:01

标签: sql database-schema

我在建模公司与供应商和客户之间的关系时遇到了问题。基本上在我的系统中,供应商和客户也是公司,所以我制定了这个模式:

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

这可以吗?

2 个答案:

答案 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语法。