问个数据库设计问题。
合同ID 合同名字 合同内容 合同子类
----------------------------------
001 开发合同 开发个ERP 网站制作 软件开发 后期维护
002 维护合同 做个小网站 网站制作 后期维护
003 实施合同 开发个管理系统 软件开发 现场实施
。
。
。
这里ID是主键,合同名字是VARCHAR,合同内容是VARCHAR,这都好理解,关键是有个合同子类,反映在具体页面上是客户可以选择的,一共有三个选项,举个例子,就是网站制作,软件开发,现场实施,后期维护这四个,页面上都是以CHECKBOX的形式显示出来的,对于一个合同,可以只有一个子类,也可以有多个子类,请问这个数据库怎么设计啊?
把合同子类单独作为一张表吗?
合同子类ID 合同子类名字
---------------------------
1 网站制作
2 软件开发
3 现场实施
4 后期维护
这样吗?再怎么和合同表连起来呢?
当查询某一条合同详细信息的时候要可以看到这个合同包含几个合同子类
怎么设计?
SQL语句怎么写?
------解决方案--------------------//合同表
======
合同ID 合同名字 合同内容
----------------------------------
001 开发合同 开发个ERP
002 维护合同 做个小网站
003 实施合同 开发个管理系统
=====
//合同与合同子类关系表
合同ID 合同子类ID
----------------
001 1
001 2
001 4
002 1
.... ...
================
//合同子类表
合同子类ID 合同子类名字
---------------------------
1 网站制作
2 软件开发
3 现场实施
4 后期维护
===========
做视图 连接3个表
------解决方案--------------------合同子类
合同子类ID 合同子类名字
---------------------------
1 网站制作
2 软件开发
3 现场实施
4 后期维护
合同表
合同ID 合同名字 合同内容 合同子类
----------------------------------
001 开发合同 开发个ERP 1,2,4
002 维护合同 做个小网站 1,4
003 实施合同 开发个管理系统 2,3
需要取合同之类 数据的时候讲1,2,4数据进行分解 然后从合同子类表取数据就行了
------解决方案--------------------如要满足第三泛式,以下设计应该可以。(参考)
合同ID 合同名字 合同内容 合同子类编号
----------------------------------
001 开发合同 开发个ERP 1
002 维护合同 做个小网站 2
003 实施合同 开发个管理系统 3
ID 合同子类编号 合同子类名字
-------------------------------------------------------
1 1 网站制作
2 2 网站制作
3 2 软件开发
4 3 网站制作
5 3 软件开发
6 3 现场实施
7 4 网站制作
……
N 5 软件开发
N+1 6 现场实施