大家一起来聊聊对数据库设计规范的看法吧!

回头不看 2011-06-08 04:32:16
最近做系统!总感觉命名不太好处理!详细规范了代码就多了!少的话不能简单清晰的各模块业务需求!就像大家有人说列名加前缀 有人说不加 一样 如何让数据库设计得更明了 清晰 合理呢
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
回头不看 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 obuntu 的回复:]
觉得第二中的会更好一些;

这种规范的东西是相通的;可以找些编程规范参考下;
[/Quote]
能提供一些文档吗?
obuntu 2011-06-08
  • 打赏
  • 举报
回复
觉得第二中的会更好一些;

这种规范的东西是相通的;可以找些编程规范参考下;

打一壶酱油 2011-06-08
  • 打赏
  • 举报
回复
规范点好
回头不看 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qianjin036a 的回复:]
SQL code
/*==============================================================*/
/* TABLE: enterprise_car_info 企业车辆信息表 */
/*===========================================================……
[/Quote]

和我的第一种模式差不多!但是如果所有的主键的都为ID的话 数据一多!表与表之间的关系的主外键列名不统一的话 容易让人费解!
-晴天 2011-06-08
  • 打赏
  • 举报
回复
/*==============================================================*/
/* TABLE: enterprise_car_info 企业车辆信息表 */
/*==============================================================*/
CREATE TABLE carinfo(
id INT PRIMARY KEY IDENTITY(1,1),
license VARCHAR(250) NOT NULL UNIQUE,/***车牌号 司机营业执照 唯一约束***/
drv_name VARCHAR(250) NOT NULL,/***司机名称****/
drv_card_id VARCHAR(250) NOT NULL,/***司机名称****/
drv_telephone VARCHAR(100) NOT NULL,/**司机联系电话**/
maximum_weight DECIMAL(18, 3) NOT NULL,/***车辆最大载重***/
pass_effective DATETIME DEFAULT GETDATE() NULL,/***通行证到期日期***/
--驽驶证与车辆无关car_driving_effective_date DATETIME DEFAULT GETDATE() NULL,/***驾驶证到期日期***/
operat_date DATETIME DEFAULT GETDATE() NULL,/***运营证到期日期***/
insurance_date DATETIME DEFAULT GETDATE() NULL,/***二期保到期日期***/
cstate BIT DEFAULT 1 NULL,/****车辆状态 1为可用 0为不可用***/
longitude DECIMAL(18, 5) NULL,/****车辆所在位置经度****/
dimensionality DECIMAL(18, 5) NULL,/****车辆所在位置维度****/
team_id INT NOT NULL,/***所属车队 外键**/
);

这样,难道会有很大的歧义吗?
回头不看 2011-06-08
  • 打赏
  • 举报
回复

/*==============================================================*/
/* TABLE: mobile_customer_team 短信平台联系人分组表 */
/*==============================================================*/
CREATE TABLE mobile_customer_team(
customer_team_id INT NOT NULL IDENTITY(1,1),
name VARCHAR(200) NOT NULL
CONSTRAINT PK_MOBILE_CUSTOMER_TEAM PRIMARY KEY (ID)
);

/*==============================================================*/
/* TABLE: mobile_customer 短信平台联系人表 */
/*==============================================================*/
CREATE TABLE mobile_customer(
customer_id INT NOT NULL IDENTITY(1,1),
name VARCHAR(250) NOT NULL,
sex BIT NOT NULL,
birthday DATETIME DEFAULT GETDATE() NOT NULL,
card_No VARCHAR(50) NOT NULL,/**身份证号**/
duty VARCHAR(250) NOT NULL,
cellphone VARCHAR(50) NOT NULL,/***联系人的移动电话**/
telephone VARCHAR(50) NOT NULL,/***移动联系人的固定电话***/
company VARCHAR(250) NOT NULL,/**联系人的工资名称***/
email VARCHAR(250) NOT NULL,/****联系人的邮箱***/
special_link VARCHAR(250) NULL,/***即时通信**/
score INT DEFAULT 0,/***移动联系人的积分**/
address VARCHAR(255) NULL,
remarks VARCHAR(255) NULL,/***备注***/
customer_team_id INT NOT NULL,/***外键 关联到mobile_customer_team表的主键**/
);


/*****************************************************************************/
/* FOREIGN KEY: 外键 */
/*****************************************************************************/
ALTER TABLE MOBILE_CUSTOMER
ADD CONSTRAINT FK_MOBILE_CUSTOMER_TEAM_ID FOREIGN KEY(CUSTOMER_TEAM_ID) REFERENCES MOBILE_CUSTOMER_TEAM(CUSTOMER_TEAM_ID);






/*==============================================================*/
/* TABLE: enterprise_car_info 企业车辆信息表 */
/*==============================================================*/
CREATE TABLE enterprise_car_info(
car_id INT PRIMARY KEY IDENTITY(1,1),
car_license VARCHAR(250) NOT NULL UNIQUE,/***车牌号 司机营业执照 唯一约束***/
car_driver_name VARCHAR(250) NOT NULL,/***司机名称****/
car_driver_card_id VARCHAR(250) NOT NULL,/***司机名称****/
car_driver_telephone VARCHAR(100) NOT NULL,/**司机联系电话**/
car_maximum_weight DECIMAL(18, 3) NOT NULL,/***车辆最大载重***/
car_pass_effective_date DATETIME DEFAULT GETDATE() NULL,/***通行证到期日期***/
car_driving_effective_date DATETIME DEFAULT GETDATE() NULL,/***驾驶证到期日期***/
car_operat_effective_date DATETIME DEFAULT GETDATE() NULL,/***运营证到期日期***/
car_second_effective_date DATETIME DEFAULT GETDATE() NULL,/***二期保到期日期***/
car_state BIT DEFAULT 1 NULL,/****车辆状态 1为可用 0为不可用***/
car_longitude DECIMAL(18, 5) NULL,/****车辆所在位置经度****/
car_dimensionality DECIMAL(18, 5) NULL,/****车辆所在位置维度****/
car_team_id INT NOT NULL,/***所属车队 外键**/
);

/*****************************************************************************/
/* FOREIGN KEY: 外键 */
/*****************************************************************************/
ALTER TABLE ENTERPRISE_CAR_INFO
ADD CONSTRAINT FK_ENTERPRISE_CAR_INFO_CAR_TEAM_ID FOREIGN KEY(CAR_TEAM_ID) REFERENCES ENTERPRISE_CAR_TEAM(CAR_TEAM_ID);


/*==============================================================*/
/* TABLE: enterprise_ship 企业船舶信息表 */
/*==============================================================*/
CREATE TABLE enterprise_ship(
ship_id INT PRIMARY KEY IDENTITY(1,1),
ship_name VARCHAR(250) NOT NULL,/***船名***/
ship_manager VARCHAR(250) NOT NULL,/***船主****/
ship_telephone VARCHAR(100) NOT NULL,/**车队负责人电话**/
car_team_state BIT NOT NULL DEFAULT 1,/***车队状态 1为可用 0为不可用***/
car_team_desc TEXT NULL,/***车队说明***/
car_team_note TEXT NULL,/***车队备注**/
);




上面是两种不同风格的命名规范 大家认为哪种好!现在我们要做系统耦合!即OA,MIS,财务管理系统,业务流程系统,CRM系统放在一个数据库里 大伙觉得什么命名方式比较好!
xuexiaodong2009 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjin036a 的回复:]

命名有什么不好处理的,只要少用关键字,并且以大家都看得懂的英文单词来命名,必要时加上前缀,一般都没什么太大的问题.
你说的列名前加不加前缀是大概指在查询语句中的说法,在数据库设计的时候不用考虑.
[/Quote]以大家都看得懂的英文单词来命名,必要时加上前缀,一般都没什么太大的问题.
mingpei0703 2011-06-08
  • 打赏
  • 举报
回复
显然楼主的模块业务要求较高,还是详细点,虽然开始代码多了点,但日后的模块调用方便得多
-晴天 2011-06-08
  • 打赏
  • 举报
回复
命名有什么不好处理的,只要少用关键字,并且以大家都看得懂的英文单词来命名,必要时加上前缀,一般都没什么太大的问题.
你说的列名前加不加前缀是大概指在查询语句中的说法,在数据库设计的时候不用考虑.
Mr_Nice 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 molaoshu 的回复:]
最近做系统!总感觉命名不太好处理!详细规范了代码就多了!少的话不能简单清晰的各模块业务需求!就像大家有人说列名加前缀 有人说不加 一样 如何让数据库设计得更明了 清晰 合理呢
[/Quote]

其实这也是个成本最优解。看关注那块儿了。真要强行把控的话,规范化的写法确实有很大的好处。 但相应成本也高了。
所以说,还是推行力度的问题。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧