需求是这样的:
一个用户对应多个账单,账单对应多个账单分组和账单类型,一个用户又有多个账单分组,一个账单分组又有多个账单类型。
我设计的表结构:
--用户
create table users
(
userId int auto_increment primary key,
userName varchar(50) not null ,
userPass varchar(50) not null
)
--账单分组
create table billGroup
(
groupId int auto_increment primary key,
groupName varchar(50) not null,
userId int not null,
foreign key(userId) references users(userId)
)
--账单类型
create table billType
(
typeId int auto_increment primary key,
typeName varchar(50) not null,
isIncome varchar(20) not null,
groupId int not null,
foreign key(groupId) references billGroup(groupId)
)
--账单
create table bill
(
billId int auto_increment primary key,
amount varchar(20) not null,
content varchar(100) ,
groupId int not null,
typeId int not null,
billDate varchar(30) not null,
userId int not null,
foreign key(groupId) references billGroup(groupId),
foreign key(typeId) references billType(typeId),
foreign key(userId) references users(userId)
)
欢迎大家提出改正的建议,谢谢~~
问题补充:
需求是这样的:
一个用户对应多个账单,账单对应多个账单分组和账单类型,一个用户又有多个账单分组,一个账单分组又有多个账单类型。
我设计的表结构:
--用户
create table users
(
userId int auto_increment primary key,
userName varchar(50) not null ,
userPass varchar(50) not null
)
--账单分组
create table billGroup
(
groupId int auto_increment primary key,
groupName varchar(50) not null,
userId int not null,
foreign key(userId) references users(userId)
)
--账单类型
create table billType
(
typeId int auto_increment primary key,
typeName varchar(50) not null,
isIncome varchar(20) not null,
groupId int not null,
foreign key(groupId) references billGroup(groupId)
)
--账单
create table bill
(
billId int auto_increment primary key,
amount varchar(20) not null,
content varchar(100) ,
groupId int not null,
typeId int? not null,
billDate varchar(30) not null,
userId int not null,
foreign key(groupId) references billGroup(groupId),
foreign key(typeId) references billType(typeId),
foreign key(userId) references users(userId)
)
欢迎大家提出改正的建议,谢谢~~
-----------------------补充---------------------
有朋友问账单分组和账单类型的关系,我解释下哦。
账单分组就是说,比如,固定收入是一个分组,
那个属于这个组的类型就有:工资,奖金,兼职赚的外快等
可能这样的设计不是很好,希望有朋友能提出更好得建议~~~
问题补充:
-----------------------补充---------------------
有朋友问账单分组和账单类型的关系,我解释下哦。
账单分组就是说,比如,固定收入是一个分组,
那个属于这个组的类型就有:工资,奖金,兼职赚的外快等
可能这样的设计不是很好,希望有朋友能提出更好得建议~~~
再补充一点:每个用户都有自己的账单分组,即这个分组是可以自己设置修改的
我觉的你还是解释下
帐单和帐单分组之间的业务关系
帐单和帐单类型,帐单和帐单分组之间的业务关系
举些实体的例子,如果只是看一对多的话,看不出什么
我个人理解,帐单类型应该还可以分为2个表
一个是帐单类型表,一个是帐单分组类型表,
麻烦解释下帐单分组的概念
我看了一下,不知道理解对吧:如下:
主要是账单,人不用管他,因为人是与账单发生关系的.
所以
1.账单配置一张表涉及到账单分组和账单类型,也就是合并一张表,没必要分成两张表,其实这和我以前做的菜单权限一样;
2.账单表一张,对于账单配置表的账单类型;
3.用户表
这个权限有什么区别?用户可以先放一边啊.
--用户
create table users
(
userId int auto_increment primary key,
userName varchar(50) not null ,
userPass varchar(50) not null,
billId int --++账单id
)
--账单分组
create table billGroup
(
Id int auto_increment primary key,
groupId int,--账单分组id
typeId int,--账单分类id
groupName varchar(50), --账单分组名称
typeName varchar(50),--账单分类名称
fartherid int,--账单分类id对应的账单分组id
)
--账单
create table bill
(
billId int auto_increment primary key,
amount varchar(20) not null,
content varchar(100) ,
groupId int not null,
typeId int not null,
billDate varchar(30) not null,
userId int not null,
foreign key(groupId) references billGroup(groupId),
foreign key(typeId) references billType(typeId)
)
然后你加上删除标志,预留字段就可以了.
账单分组的表还可以优化的,你看看.
我的思路就是这样的.