Thank you once again, David!
Here it is my final DB. Could you take a look at it and tell me if I could
optimize it.
CREATE TABLE ESTATE.BLEK.Users
(
UserID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
Username VARCHAR(20) NOT NULL UNIQUE(Username),
UserPass VARCHAR(20) NOT NULL,
RealName VARCHAR(64) NOT NULL,
UserAddr VARCHAR(74) NOT NULL,
UserEmail VARCHAR(64) NOT NULL,
UserType CHAR(1) NOT NULL, ----->agancy OR person
UserRole VARCHAR(6) NOT NULL, ----->Admin OR user
UserLLO SMALLDATETIME NOT NULL ------> LastLoginDate
)
CREATE TABLE ESTATE.BLEK.Est_Type
(
TypeID CHAR(3) PRIMARY KEY CLUSTERED, -----> is it OK if the Primary Key
is CHAR? I use char because the search is easier
TypeEst VARCHAR(16) NOT NULL ----> Type Estate: apartment, house,
office, field, etc
)
CREATE TABLE ESTATE.BLEK.TypeOffer
(
OfferID INT PRIMARY KEY CLUSTERED,
TypeOffer VARCHAR(14) NOT NULL -------> Type Offer : buy, sell, rent,
change, etc
)
CREATE TABLE ESTATE.BLEK.TypeConstruction
(
ConstrID CHAR(1) PRIMARY KEY CLUSTERED, ----> Again CHAR. Is it OK?
TypeConstr VARCHAR(14) NOT NULL ----> Type Construction: bricks, panel,
etc..
)
CREATE TABLE ESTATE.BLEK.Estates
(
EstateID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
EstCity VARCHAR(20) NOT NULL,
EstDistr VARCHAR(30),
EstPhone CHAR(1) NOT NULL CHECK(EstPhone IN('Y','N')), -----> If the
estate has phone line
EstFurn CHAR(1) NOT NULL CHECK(EstFurn IN('Y','N')), ------->If the
estate has furniture
EstHeating CHAR(1) NOT NULL CHECK(EstHeating IN('Y','N')), ------>If the
estate has heating
AdDate SMALLDATETIME NOT NULL,
EstTypeID CHAR(3) NOT NULL
FOREIGN KEY(EstTypeID) REFERENCES ESTATE.BLEK.Est_Type(TypeID),
TypeOfferID INT NOT NULL
FOREIGN KEY(TypeOfferID) REFERENCES ESTATE.BLEK.TypeOffer(OfferID),
TypeConstrID CHAR(1) NOT NULL
FOREIGN KEY(TypeConstrID) REFERENCES
ESTATE.BLEK.TypeConstruction(ConstrID)
)
CREATE TABLE ESTATE.BLEK.Est_Descriptions
(
DescrID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
EstateID INT NOT NULL
FOREIGN KEY (EstateID) REFERENCES ESTATE.BLEK.Estates(EstateID),
Descr VARCHAR(255) NOT NULL --------> If some one would like to post
any additional description of his/her estate. It is optional when add an ad
)
CREATE TABLE ESTATE.BLEK.Pictures
(
PictureID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
EstateID INT NOT NULL
FOREIGN KEY (EstateID) REFERENCES ESTATE.BLEK.Estates(EstateID),
PICEST VARCHAR(55) NOT NULL -------> The same story as the
description. I save the FilePath here
)
CREATE TABLE ESTATE.BLEK.Search
(
EstateID INT NOT NULL
FOREIGN KEY (EstateID) REFERENCES ESTATE.BLEK.Estates(EstateID),
UserID INT NOT NULL
FOREIGN KEY (UserID) REFERENCES ESTATE.BLEK.Users(UserID),
MinPrice INT NULL, --/-----> Your offer here
MaxPrice INT NULL,--/
MinRoom INT NULL,--/
MaxRoom INT NULL,--/
MinFloor INT NULL,--/
MaxFloor INT NULL,--/
MinSQM INT NULL,--/
MaxSQM INT NULL--/
)
CREATE TABLE ESTATE.BLEK.Offers
(
EstateID INT NOT NULL
FOREIGN KEY (EstateID) REFERENCES ESTATE.BLEK.Estates(EstateID),
UserID INT NOT NULL
FOREIGN KEY (UserID) REFERENCES ESTATE.BLEK.Users(UserID),
Price INT NOT NULL,
Rooms INT NULL,
SqMeters INT NOT NULL,
Floors INT NULL
)
CREATE TABLE ESTATE.BLEK.Messages ------> I use this table if someone want
so answer to someone's advertisements
(
MssgID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
EstateID INT NOT NULL
FOREIGN KEY (EstateID) REFERENCES ESTATE.BLEK.Estates(EstateID),
UserID INT NOT NULL
FOREIGN KEY (UserID) REFERENCES ESTATE.BLEK.Users(UserID),
MssgTxt VARCHAR(255) NOT NULL,
MssgDate SMALLDATETIME NOT NULL,
ParentKey INT
FOREIGN KEY (ParentKey) REFERENCES ESTATE.BLEK.Messages(MssgID)
)
What do you think about thi construction? Could tell me?
Thank you in advance !
Viktor
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com).
Version: 6.0.721 / Virus Database: 477 - Release Date: 16.7.2004 a.