日期:2014-05-17  浏览次数:20753 次

oracle数据库表的建立
餐厅点餐系统:
有个订单表-->定单对应的菜表,订单对应的酒水表。。。下面就是最恶心的(要求要一个订单的修改的详细记录),详细记录里面有:是顾客、前台还是服务员修改了菜单,添加/删除/修改了 哪些菜或酒水(以及菜或酒水的注释信息),修改了总订单表的备注信息,注释信息,修改时间。。。。想半天没想明白怎么建。。。
//总的订单表
create table order(
  id number primary key,
  oid number unique,
  note varchar2(),
  ...//省略一些属性

//订单菜表
create table orderdish(
  id number primary key,
  oid number,
  ....
  foreign key(oid) references order(oid) on delete cascade
  ...
)
//订单酒水表。。。跟菜表差不多
现在需求要 记录订单之后修改的信息。。。。网上有人让用触发器实现,可是我查看触发器半天教程还是无从下手,
求高手教育。。。

------解决方案--------------------
其实不用触发器,也可以。在项目的编程中,也可以处理的。
表结构包括:订单表、订单菜表、订单酒水表、订单变更记录表、订单菜表变更记录表、订单酒水变更记录表
1、在下订单、点菜、点酒水,新增的时候按正常走
2、在变更订单,变更菜、变更酒水的时候,在保存变更后的内容到相关表的同时,你同步的将变更记录的信息保存到变更记录表中即可。这个是可以在你程序模块中实现,不用非得放在数据库那层去实现。
个人建议不用触发器,不易于测试和维护。