[英]Gym Appointments database schema
我正在用PHP / Symfony2 / Doctrine 2開發一個Gym Management應用程序。我也在開發約會模塊。 約會不能是帶有特定event_date(發生日期的日期)的單行,因為約會每周持續幾天,持續數周或數月。 我如何通過以日歷格式顯示約會來設計用於保留約會的實體,以便在某個月的每一天都可以查看當天的約會?
先感謝您。
Appointment
實體應該保存ID,描述符,start_date,end_date等信息。要注意的重要一點是“開始”和“結束”,這使您的Appointment
可以靈活地跨越多個天/月。
在日歷中,如果要顯示開始和結束日期在1月1日到1月7日之間的事件,它將是以下查詢構建器對象:
// In EntityRepository for Appointments
$this->getQueryBuilder('a')
->where('a.startDate BETWEEN :start AND :end')
->andWhere('a.endDate BETWEEN :start AND :end')
->setParameters([
"start" => '2016-01-01',
"end" => '2016-01-07'
])
->getQuery()
->getResult();
如果您只希望某天發生並在同一天結束的事件,則只需調整參數即可。
好的,這是一個好的開始。 我認為它可以彌補您設置的所有限制。 我已經使用了很多合成鍵,但這是為了簡化表格。
由於您設置了約束:“因為它每周持續幾天,持續數周或數月”,因此是錯誤的查看方式。 您必須將約會的每個條目存儲在表中(如果絕對需要,可以使用xml文件,但是最好的方法是按照您的想法使用mysql)
在這里,您將每個日期存儲在C_date表中,然后在Appointment_date中引用該日期。 這是約會的時間。 我會拜拜刪除C_date並insted將信息添加到約會。
create table User(
user varchar(32) NOT NULL PRIMARY KEY
);
create table C_date (
c_date DATE NOT NULL PRIMARY KEY
);
create table Appointment(
user varchar(32) NOT NULL,
trainer varchar(32) NOT NULL,
CONSTRAINT FOREIGN KEY(user) REFERENCES User(user),
CONSTRAINT FOREIGN KEY(trainer) REFERENCES User(user),
CONSTRAINT id PRIMARY KEY(user, trainer)
);
create table Appointment_date(
user varchar(32) NOT NULL,
trainer varchar(32) NOT NULL,
app_date DATE NOT NULL COMMENT "The time and date for the appointment",
time TIME NOT NULL,
CONSTRAINT FOREIGN KEY(user, trainer) REFERENCES Appointment(user, trainer),
CONSTRAINT FOREIGN KEY(app_date) REFERENCES C_date(c_date),
CONSTRAINT id PRIMARY KEY(user, trainer, app_date)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.