SQL YABANCI ANAHTAR (FOREIGN)

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 245

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0

SQL YABANCI ANAHTAR

YABANCI ANAHTAR, iki tablo arasındaki ilişkiyi tanımlamak için kullanılır ve bir tablodaki YABANCI ANAHTAR, başka bir tablodaki BİRİNCİL ANAHTAR'ı gösterir.

CREATE TABLE ifadesiyle bir sütunda FOREIGN KEY Kısıtlamasının sözdizimi:

MySQL:


Kod:
CREATE TABLE Emirleri  ( Order_Id int NOT NULL , SiparişNo int NULL DEĞİL , P_Id int , BİRİNCİL ANAHTAR ( Order_Id ) , YABANCI ANAHTAR ( P_Id ) REFERANSLAR Kişiler ( P_Id ) )

SQL Server / Oracle / MS Erişimi:


Kod:
CREATE TABLE Siparişleri  ( Order_Id int NOT NULL PRIMARY KEY, SiparişNo int NULL DEĞİL , P_Id int YABANCI ANAHTAR REFERANSLAR Kişiler ( P_Id ) )

ALTER TABLE ifadesiyle bir sütunda FOREIGN KEY Kısıtlamasının sözdizimi:

MySQL / SQL Sunucusu / Oracle / MS Erişimi:


Kod:
ALTER TABLE Orders DROP FOREIGN KEY fk_POrders

CREATE TABLE ifadesiyle bir sütunda FOREIGN KEY Kısıtlamasının sözdizimi:

MySQL / SQL Sunucusu / Oracle / MS Erişimi:


Kod:
CREATE TABLE Emirleri  ( Order_Id int NOT NULL , SiparişNo int NULL DEĞİL , P_Id int , BİRİNCİL ANAHTAR ( Order_Id ) , KISITLAMA fk_POrders YABANCI ANAHTAR ( P_Id ) REFERANSLAR Kişiler ( P_Id ) )

ALTER TABLE ifadesiyle bir sütunda FOREIGN KEY Kısıtlamasının sözdizimi:

MySQL / SQL Sunucusu / Oracle / MS Erişimi:

Kod:
ALTER TABLE Emirleri KISITLAMA EKLE fk_POrders YABANCI ANAHTAR ( P_Id ) REFERANSLAR Kişiler ( P_Id )

YABANCI ANAHTAR'ı Bırak:

Yabancı anahtarı silmek için aşağıdaki sözdizimini kullanın.

MySQL:


Kod:
ALTER TABLE Orders DROP FOREIGN KEY fk_POrders

SQL Server / Oracle / MS Erişimi:


Kod:
ALTER TABLE Orders DROP CONSTRAINT fk_POrders

Birincil anahtar ile yabancı anahtar arasındaki fark:


[TABLE=full][TR][TD]Birincil anahtar[/TD][TD]Yabancı anahtar[/TD][/TR][TR][TD]
  1. <li data-xf-list-type="ol">Birincil anahtar boş değerler içeremez. <li data-xf-list-type="ol">Birincil anahtar çoğaltılamaz. <li data-xf-list-type="ol">Bir tablo yalnızca bir birincil anahtara sahip olabilir. <li data-xf-list-type="ol">Birincil anahtar otomatik olarak kümelenmiş bir dizin ekler.
[/TD][TD]
  1. <li data-xf-list-type="ol">Yabancı anahtar boş değerler içerebilir. <li data-xf-list-type="ol">Yabancı anahtar çoğaltılabilir. <li data-xf-list-type="ol">Bir tablo birden fazla yabancı anahtara sahip olabilir. <li data-xf-list-type="ol">Yabancı anahtar otomatik olarak herhangi bir dizin eklemez.
[/TD][/TR]
[/TABLE]
SQL Yabancı Anahtar (Foreign Key) Nedir Ve Metin2 Veritabanlarında Nasıl Kullanılır?

Metin2 Sunucularında SQL Bilgisi Ne Kadar Önemlidir?
Metin2 gibi MMORPG oyunlarında sunucu yönetimi ve veritabanı işlemleri oldukça kritik rol oynar. Özellikle Metin2 geliştiricileri, oyuncuların verilerinin tutulduğu tablolar arasında bağlantı kurmak ve veri bütünlüğünü sağlamak adına SQL yabancı anahtarlarını (foreign key) doğru şekilde kullanmalıdır. Bu yazıda, foreign key kavramını açıklarken Metin2 veritabanı örnekleriyle destekleyeceğiz.

Yabancı Anahtar (Foreign Key) Nedir?
SQL dilinde foreign key, bir tablonun bir sütununun başka bir tablodaki primary key (anahtar) ile ilişkilendirilmesini sağlar. Bu sayede iki tablo arasında ilişki kurulmuş olur. Örneğin, Metin2’de bir 'player' tablosunda oyuncu bilgileri tutulurken, bu oyuncuya ait envanter bilgileri başka bir 'inventory' tablosunda bulunabilir. Inventory tablosundaki 'player_id' sütunu, player tablosundaki 'id' sütununa bağlanarak ilişkisel yapı oluşturulur.

Metin2 Veritabanında Foreign Key Kullanımı
Metin2 veritabanları genellikle MariaDB veya MySQL sistemlerinde barındırılır. Oyunun birçok tablosu vardır: player, item, guild, account, inventory, item_proto, mob_proto, quest gibi. Bu tabloların çoğu birbiriyle ilişkilidir. Örneğin, bir oyuncunun sahip olduğu eşyalar inventory tablosunda tutulur. Bu tablonun 'owner_id' sütunu, player tablosundaki 'id' sütununa bağlıdır. Bu ilişki foreign key ile sağlanır.

Örnek Kod:
Kod:
[B]ALTER TABLE inventory ADD FOREIGN KEY (owner_id) REFERENCES player(id);[/B]


Foreign Key ile Veri Bütünlüğü[/BR][/BR]Foreign key, veri bütünlüğünü korumak için çok önemlidir. Silinen bir oyuncunun envanter kayıtlarının da silinmesi gerekir. Bunun için ON DELETE CASCADE gibi işlemler foreign key tanımlanırken kullanılabilir. Bu sayede veritabanında çöp veri oluşması engellenir.

Hatalı Foreign Key Kullanımının Sonuçları[/BR][/BR]Yanlış tanımlanmış foreign key’ler, veritabanı performansını düşürebilir ya da silme/güncelleme işlemlerinde hata verebilir. Özellikle Metin2 geliştiricileri, foreign key tanımlarken dikkat etmelidir. Örneğin, bir item_proto tablosundaki bir eşya silinirse, bununla ilişkili tüm item kayıtlarının da silinmesi gerekebilir.

Metin2 Tabloları Arasındaki İlişkiler
Metin2 veritabanı yapısı oldukça karmaşık olsa da foreign key’lerle bu yapı daha düzenli hale getirilebilir. Örneğin, guild (klan) tablosu ile player tablosu arasında bir ilişki kurulabilir. Bir oyuncu bir klana dahilse, guild_member tablosunda bu bilgi yer alır. Burada foreign key, hem player.id hem de guild.id ile bağlantılıdır.

Diğer Yaygın Tablo İlişkileri:
- account.id ile player.account_id
- player.id ile inventory.owner_id
- item.vnum ile item_proto.vnum

Foreign Key ile Performans Artışı[/BR][/BR]Doğru tanımlanmış foreign key’ler, JOIN sorgularında performans artışı sağlayabilir. Özellikle büyük sunucularda, veri sayısı arttıkça foreign key’lerin indekslenmesi sorgu hızını artırır. Metin2 sunucularında bu durum, online oyuncu sayısının yüksek olduğu zamanlarda kritik önem taşır.

Geliştiriciler İçin Tavsiyeler
Metin2 geliştiricileri, foreign key tanımlarken şu adımları izlemelidir:

- Var olan tablolarda foreign key tanımlamadan önce primary key’lerin doğru tanımlandığından emin olun.
- Gereksiz foreign key tanımlamaktan kaçınılmalı.
- Her foreign key ilişkisi, veri akışını etkileyebileceğinden dikkatlice planlanmalı.

Sonuç[/BR][/BR]SQL foreign key, Metin2 veritabanı yönetiminde önemli bir yapıdır. Doğru kullanıldığında veri bütünlüğü sağlanır, performans artar ve tablolar arası ilişkiler daha anlaşılır hale gelir. Metin2 geliştiricileri, foreign key’leri etkin şekilde kullanarak daha stabil ve verimli sunucular oluşturabilirler.


What Is SQL Foreign Key And How To Use It In Metin2 Databases?

How Important Is SQL Knowledge In Metin2 Servers?
In MMORPG games like Metin2, server management and database operations play a critical role. Especially for Metin2 developers, it's essential to properly use SQL foreign keys to establish connections between tables holding player data and ensure data integrity. In this article, we will explain the concept of foreign key while supporting it with examples from Metin2 databases.

What Is A Foreign Key?
In SQL language, a foreign key allows linking one column of a table to the primary key of another table. This creates a relationship between two tables. For example, in Metin2, player information is stored in the 'player' table, whereas their inventory details might be in a separate 'inventory' table. The 'player_id' column in the inventory table connects to the 'id' column in the player table, forming a relational structure.

Using Foreign Keys In Metin2 Database
Metin2 databases are typically hosted on MariaDB or MySQL systems. The game includes many tables: player, item, guild, account, inventory, item_proto, mob_proto, quest, etc. Most of these tables are interconnected. For instance, items belonging to a player are stored in the inventory table. The 'owner_id' column in this table links to the 'id' column in the player table. This connection is established via a foreign key.

Example Code:
Kod:
[B]ALTER TABLE inventory ADD FOREIGN KEY (owner_id) REFERENCES player(id);[/B]


Data Integrity With Foreign Keys[/BR][/BR]Foreign keys are crucial for maintaining data integrity. When a player is deleted, their inventory records should also be removed. This can be achieved by using actions such as ON DELETE CASCADE during foreign key definition. This prevents orphaned data in the database.

Consequences Of Incorrect Foreign Key Usage[/BR][/BR]Incorrectly defined foreign keys may reduce database performance or cause errors during delete/update operations. Particularly, Metin2 developers must pay attention when defining foreign keys. For example, if an item in the item_proto table is deleted, all related item records may also need deletion.

Relationships Between Metin2 Tables
Although the Metin2 database structure is complex, it can be organized more efficiently with foreign keys. For example, a relationship can exist between the guild and player tables. If a player joins a clan, that information is stored in the guild_member table, where the foreign key links both player.id and guild.id.

Other Common Table Relationships:
- account.id with player.account_id
- player.id with inventory.owner_id
- item.vnum with item_proto.vnum

Performance Improvement With Foreign Keys[/BR][/BR]Properly defined foreign keys can enhance query performance in JOIN operations. On large servers, as data volume increases, indexing foreign keys can accelerate queries. This becomes critical for Metin2 servers during times of high player activity.

Recommendations For Developers
When defining foreign keys, Metin2 developers should follow these steps:

- Ensure primary keys are correctly defined before adding foreign keys to existing tables.
- Avoid unnecessary foreign key definitions.
- Plan each foreign key relationship carefully since they may affect data flow.

Conclusion[/BR][/BR]SQL foreign keys are an important component of Metin2 database management. When used correctly, they ensure data integrity, improve performance, and make relationships between tables clearer. By effectively utilizing foreign keys, Metin2 developers can build more stable and efficient servers.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt