hoshicameron
چهارشنبه 05 بهمن 1390, 15:29 عصر
با سلام خدمت اساتید محترم . من برای پروژه مهندسی نرم افزار باید سیستم تحویل نسخ رو در بیمه پیاده سازی کنم . در طول ترم من کلاس دیاگرام ها و روابط بین کلاس و بقیه موارد مربوطه رو پیاده سازی کردم . الان هم می خوام پایگاه داده برنامه رو طراحی کنم . مشکل اصلی من اینه که در کلاس دیاگرام من یک کلاسی به اسم طرفین قرارداد دارم (منظور پزشکان و داروخانه ها و رادیولوژی و سایر مراکزی است که با بیمه قرارداد می بندند ). که این کلاس صفات و عملگرهاش توسط سه زیر کلاس پزشکان و داروخانه ها و پاراکلینیک به ارث برده می شه . حالا سوال من اینه که من چجوری باید این ارث بری رو در پایگاه داده پیاده سازی کنم . البته کلی گشتم و چیز خاصی که بتونه کمکم کنه به دست نیاورد به جز این مطلبی که در پایین می نویسم ولی از این هم نتونستم جواب سوالم رو به دست بیارم .
CREATE TABLE Vehicles
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) NOT NULL
CHECK(vehicle_type IN ('SUV', 'SED')),
UNIQUE (vin, vehicle_type),
..);
CREATE TABLE SUV
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SUV' NOT NULL
CHECK(vehicle_type = 'SUV'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE Sedans
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SED' NOT NULL
CHECK(vehicle_type = 'SED'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
I can continue to build a hierarchy like this. For example, if I had
a Sedans table that broke down into two-door and four-door sedans, I
could a schema like this:
CREATE TABLE Sedans
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SED' NOT NULL
CHECK(vehicle_type IN ('2DR', '4DR', 'SED')),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE TwoDoor
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT '2DR' NOT NULL
CHECK(vehicle_type = '2DR'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Sedans(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE FourDoor
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT '4DR' NOT NULL
CHECK(vehicle_type = '4DR'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Sedans (vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
تو این مثال نویسنده یه جدولی رو با نام vehicle ساخته که کلید این صفت در بقیه جداول به عنوان کلید اصلی تکرار شده . سوال من اینه که اون صفت کلید (vin) که تو جداول بعدی تکرار شده و هم کلید اصلی است و هم کلید خارجی قضیه اش چیه ؟ در ضمن اگه من بخوام به این جداول مقدار بدم چجوری باید عمل کنم . کمی تا مقداری گیجیده ام .
مثلا اگه من بخوام این روش رو درپایگاه داده خودم پیاده سازی کنم چجوری جداول مقدار می گیرن . لطفا دستورات sql رو هم برام بنویسید ( دستورات درج و select ) . حالا اگه من بخوام یه جدول بسازم به نام طرفین قرارداد که صفات (کد و نام و نام خانوادگی و آدرس رو داشته باشه ) و جدول پزشک (کد ( کلید خارجی ) و مدرک ) داشته باشند . من اگه بخوام پزشک جدیدی رو اضافه کنم چه کدهایی رو باید بنویسم . در ضمن بین طرفین قرارداد و بخش پذیرش بیمه هم رابطه هست . من باید برای روابط بین پزشک و بخش پذیرش ، داروخانه و بخش پذیرش و ... از یم جدول استفاده کنم یا روابط رو در چند جدول ثبت کنم .
ببخشید که یه کم زیاد شد و سرتون رو به درد آوردم . تازه کارم دیگه . به شدت نیازمند راهنمای سبزتون هستم .
CREATE TABLE Vehicles
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) NOT NULL
CHECK(vehicle_type IN ('SUV', 'SED')),
UNIQUE (vin, vehicle_type),
..);
CREATE TABLE SUV
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SUV' NOT NULL
CHECK(vehicle_type = 'SUV'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE Sedans
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SED' NOT NULL
CHECK(vehicle_type = 'SED'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
I can continue to build a hierarchy like this. For example, if I had
a Sedans table that broke down into two-door and four-door sedans, I
could a schema like this:
CREATE TABLE Sedans
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT 'SED' NOT NULL
CHECK(vehicle_type IN ('2DR', '4DR', 'SED')),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Vehicles(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE TwoDoor
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT '2DR' NOT NULL
CHECK(vehicle_type = '2DR'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Sedans(vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
CREATE TABLE FourDoor
(vin CHAR(17) NOT NULL PRIMARY KEY,
vehicle_type CHAR(3) DEFAULT '4DR' NOT NULL
CHECK(vehicle_type = '4DR'),
UNIQUE (vin, vehicle_type),
FOREIGN KEY (vin, vehicle_type)
REFERENCES Sedans (vin, vehicle_type)
ON UPDATE CASCADE
ON DELETE CASCADE,
..);
تو این مثال نویسنده یه جدولی رو با نام vehicle ساخته که کلید این صفت در بقیه جداول به عنوان کلید اصلی تکرار شده . سوال من اینه که اون صفت کلید (vin) که تو جداول بعدی تکرار شده و هم کلید اصلی است و هم کلید خارجی قضیه اش چیه ؟ در ضمن اگه من بخوام به این جداول مقدار بدم چجوری باید عمل کنم . کمی تا مقداری گیجیده ام .
مثلا اگه من بخوام این روش رو درپایگاه داده خودم پیاده سازی کنم چجوری جداول مقدار می گیرن . لطفا دستورات sql رو هم برام بنویسید ( دستورات درج و select ) . حالا اگه من بخوام یه جدول بسازم به نام طرفین قرارداد که صفات (کد و نام و نام خانوادگی و آدرس رو داشته باشه ) و جدول پزشک (کد ( کلید خارجی ) و مدرک ) داشته باشند . من اگه بخوام پزشک جدیدی رو اضافه کنم چه کدهایی رو باید بنویسم . در ضمن بین طرفین قرارداد و بخش پذیرش بیمه هم رابطه هست . من باید برای روابط بین پزشک و بخش پذیرش ، داروخانه و بخش پذیرش و ... از یم جدول استفاده کنم یا روابط رو در چند جدول ثبت کنم .
ببخشید که یه کم زیاد شد و سرتون رو به درد آوردم . تازه کارم دیگه . به شدت نیازمند راهنمای سبزتون هستم .