Ardından, duğumleri ve kenarları kağıda veya herhangi bir diyagram yazılımına cizdikten sonra, sorgu duzenleyicisini kullanarak SSMS'de duğumler ve kenarlar icin tablolar oluşturun.

Aşağıda gerekli sozdizimi verilmiştir:


Kod:
-- For a Node table CREATE TABLE ( column1 , column2 , columnN ) AS NODE -- For an Edge table CREATE TABLE ( column1 , column2 , columnN ) AS EDGE


Ancak tercih ederseniz, SSMS'de Tablolar klasorune sağ tıklayın ve Yeni -> Grafik Tablosu -> Duğum Tablosu'nu secin . Kenar tabloları icin Yeni -> Grafik Tablosu -> Kenar Tablosu'nu secin . Aşağıdaki Şekil 5'teki ekran goruntusune bakın:


SQL Server Management Studio'da (SSMS) duğum ve kenar tabloları oluşturma
Bunu takiben yeni bir sorgu penceresi gorunecektir. İhtiyacınız olan tablo adını ve alanları doldurun, ardından komutları yurutun.

Duğum tablolarınızın $ node_id'leri ve kenar tablolarınızın $ edge_id'leri icin indeksler otomatik olarak oluşturulacaktır . Ancak , performans nedenlerinden oturu kenar tablolarınızın her birinin $ from_id ve $ to_id icin bir tane daha dizin oluşturmalısınız .

Aşağıdaki orneğe bakın:

Kod:
CREATE UNIQUE INDEX ix_ordered_from_to on ordered ($from_id, $to_id) CREATE TABLE Restaurants ( [RestaurantID] INT PRIMARY KEY NOT NULL, [Name] VARCHAR(20) NOT NULL, [Description] VARCHAR(50) NOT NULL, [Opening] TIME NOT NULL, [Closing] TIME NOT NULL, [DeliveryCharge] SMALLMONEY DEFAULT 0 NOT NULL ) AS NODE CREATE TABLE Locations ( [LocationID] INT PRIMARY KEY NOT NULL, [Description] VARCHAR(50) NOT NULL, [GeoLocation] GEOGRAPHY NOT NULL ) AS NODE CREATE TABLE FoodBeverages ( [FoodBeverageID] INT PRIMARY KEY NOT NULL, [Name] VARCHAR(50) NOT NULL, [Amount] MONEY NOT NULL ) AS NODE CREATE TABLE Orders ( [OrderID] INT PRIMARY KEY NOT NULL, [CustomerID] INT NOT NULL, [OrderDate] DATETIME NOT NULL, [TotalCost] MONEY NOT NULL, [LocationID] INT NOT NULL, [RestaurantID] INT NOT NULL ) AS NODE CREATE TABLE OrderDetails ( [OrderDetailID] INT PRIMARY KEY NOT NULL, [OrderID] INT NOT NULL, [FoodBeverageID] INT NOT NULL, [Quantity] TINYINT NOT NULL, [UnitCost] MONEY NOT NULL, [ComputedCost] MONEY NOT NULL ) AS NODE CREATE TABLE Customers ( [CustomerID] INT PRIMARY KEY NOT NULL, [Name] VARCHAR(50) NOT NULL, [email] VARCHAR(50) NOT NULL, [password] VARCHAR(10) NOT NULL ) AS NODE CREATE TABLE isServed AS EDGE CREATE TABLE isLocated AS EDGE CREATE TABLE ordered AS EDGE CREATE TABLE isIncluded AS EDGE CREATE TABLE received AS EDGE CREATE TABLE includes AS EDGE CREATE TABLE willReceiveIn AS EDGE CREATE UNIQUE INDEX ix_isIncludes_from_to on isIncluded ($from_id, $to_id) CREATE UNIQUE INDEX ix_includes_from_to on includes ($from_id, $to_id) CREATE UNIQUE INDEX ix_ordered_from_to on ordered ($from_id, $to_id) CREATE UNIQUE INDEX ix_received_from_to on received ($from_id, $to_id) CREATE UNIQUE INDEX ix_isServed_from_to on isServed ($from_id, $to_id) CREATE UNIQUE INDEX ix_isLocated_from_to on isLocated ($from_id, $to_id) CREATE UNIQUE INDEX ix_willReceiveIn_from_to on willReceiveIn ($from_id, $to_id)


Verilerinizi ilk kez hazırlamak biraz zahmetlidir cunku verileri yalnızca duğum tablolarına değil kenar tablolarına da eklemeniz gerekir. Yine de, bu daha kısa ve daha basit sorgular icin avantajlı olacaktır. Bununla ilgili daha sonra daha fazlası.

Diğer tablo turlerinde yaptığınız gibi duğum ve kenar tablolarında bir INSERT deyimi kullanacaksınız . Ve aşağıdaki ornekte olduğu gibi duğum tablolarına kayıt eklemeye başlayabilirsiniz:


Kod:
INSERT INTO Restaurants VALUES (1, 'Subway','American * Sandwiches * Fast Food * Salad','10:00','15:59',0) INSERT INTO FoodBeverages VALUES (1,'Sliced Chicken and Ham',149.50), (2,'Subway Melt',184.00), (3,'Meatball Marinara Regular Meal',281.75), (4,'Coke in Can',51.75) -- food&beverages served on Subway (RestaurantID = 1) INSERT INTO isServed VALUES -- for the Sliced Chicken and Ham ( (SELECT $node_id FROM Restaurants r WHERE r.RestaurantID = 1), (SELECT $node_id FROM FoodBeverages fb WHERE fb.FoodBeverageID = 1) ), -- for the Subway Melt ( (SELECT $node_id FROM Restaurants r WHERE r.RestaurantID = 1), (SELECT $node_id FROM FoodBeverages fb WHERE fb.FoodBeverageID = 2) ), -- for the Meatball Marinara Regular Meal ( (SELECT $node_id FROM Restaurants r WHERE r.RestaurantID = 1), (SELECT $node_id FROM FoodBeverages fb WHERE fb.FoodBeverageID = 3) ), -- for the coke in can ( (SELECT $node_id FROM Restaurants r WHERE r.RestaurantID = 1), (SELECT $node_id FROM FoodBeverages fb WHERE fb.FoodBeverageID = 4)


Ve işte nokta: Duğum tabloları arasında ilişkiler kurmak icin, kenar tablolarına kayıtlar eklersiniz.

Tum tablolardaki verileri doldurmak icin eksiksiz bir komut dosyası icin bu makalenin sonundaki bağlantılara bakın.