Bugün görevimiz Hazırda Bekletme konusundaki ikinci projeyi tamamlamak. Özü, veritabanının yapısını anlamak, varlığı mevcut tablolarla eşlemek ve eşlemenin doğru yapıldığını kontrol etmek için minimum işlevsellik eklemektir.
Şimdi daha ayrıntılı olarak:
- Döküm dosyasını indirin ve yerel makinenize dağıtın. Veritabanı olarak, MySQL kurulum paketiyle birlikte örnek olarak dağıtılan bir test veritabanı kullanacağız. Veritabanının durumunu düzeltmek için döküm gereklidir, çünkü bunun bir gün, ay, yıl içinde değişmeyeceğini garanti edemeyiz.
- Bir proje şablonumuz olmayacağı için projeyi kendiniz oluşturun. Gerekli tüm bağımlılıklara sahip bir maven projesi olmalıdır ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
- Yerel dağıtılan veritabanımızı Idea'da bir veri kaynağı olarak ekleyin. Bundan sonra, Veritabanı sekmesinde imleci film şemasının üzerine getirin ve tuş kombinasyonuna basın
Alt+Ctrl+Shift+U
(yalnızca Ultimate sürümde çalışır). Bu, tüm film şemasının yapısını gösterecektir (sütun adları, anahtarlar vb. ile). Buna benzer:Katılıyorum, izlemesi pek rahat değil. Tüm sütunların ve yorumların başlığının görüntülenmesini kapatın:
Sonuç olarak, halihazırda analiz edilebilecek bir veritabanı şeması elde edeceksiniz:
- Devre karmaşık görünüyor, ancak her şey o kadar da kötü değil. Veritabanının yapısını analiz etmek için nereden başlayacağınızı bulmanız gerekir. Tek bir doğru cevap yok, ancak bir tablo ile başlamanızı tavsiye ederim
film
. Örnek olarak birkaç ilişkiyi ele alalım:film
ve tabloları arasındaki ilişki ,film_text
açık bir OneToOne ilişkisidir çünkü tablonunfilm_text
bir alanı vardırfilm_id
.OLUMSUZbir tablodan bir kimliği ifade ederfilm
(yabancı anahtar yok). Ancak isme ve mantığa göre bu bağlantı olmalıdır. Ek olarak, tablodafilm_text
alan ,film_id
bir "filmin" birden fazla "film metnine" karşılık gelmemesini garanti eden birincil anahtar görevi görür.- Şimdi tablolara bakalım
film
vecategory
. Mantıksal olarak, bir filmin birkaç kategorisi olabilir. Ve bir kategori, belki farklı filmler. Ayrıca bu iki tablo arasında ara bağlantı tablosu bulunmaktadırfilm_category
. Yukarıdakilerin hepsine dayanarak, bu açık bir ManyToMany ilişkisidir . - Tablolara bakıyoruz
film
velanguage
. Mantık açısından bakıldığında filmin farklı dillere çevirisi olabilir ve farklı filmler aynı dilde olabilir. Yani, ManyToMany kendini önerir . Ancak tablonun içeriğine bakacak olursakfilm
, tablonun her satırının benzersiz bir film olduğunu görebiliriz. Ve satırda yalnızca bir Language_id alanı vardır (orijinal_language_id de vardır, ancak tüm kayıtlarda boştur, bu yüzden onu yok sayabiliriz). Yani bir filmin sadece bir dili olabilir. Ve bir dil, belki farklı filmler. Bağlantı ManyToOne'dır ( bağlantı, filmden dile yönlendirilir).
- Şimdi ana görev, gerekli tüm varlık sınıflarını oluşturmak ve bunları şema tablolarına eşlemektir
movie
. - Tüm bağımlı alanlarla yeni bir müşteri (müşteri tablosu) oluşturabilen bir yöntem ekleyin. Yöntemi işlemsel yapmayı unutmayın (alıcının adresinin veritabanına kaydedildiği, ancak alıcının kendisinin olmadığı duruma gelmemek için).
- "Müşteri gitti ve önceden kiralanmış bir filmi iade etti" olayını açıklayan bir işlem yöntemi ekleyin. Seçtiğiniz herhangi bir alıcı ve kiralama olayını seçin. Filmin puanının yeniden hesaplanmasına gerek yok.
- "Alıcının mağazaya (mağazaya) gidip orada kiraladığı (kiralık) envanteri (envanteri)" olayını açıklayan bir işlem yöntemi ekleyin. Aynı zamanda satıcıya (personele) ödeme (ödeme) yaptı. Film (envanter aracılığıyla) kendi takdirinize göre seçin. Tek kısıtlama, filmin kiralanabilir olması gerektiğidir. Yani kiralamada ya hiç stok kaydı bulunmamalı ya da bu envanterin son kiralamasına ait tablonun iade_tarihi
rental
sütunu doldurulmalıdır. - "Yeni bir film çekildi ve kiralanabilir hale geldi" olayını açıklayan bir işlem yöntemi ekleyin. Film, dil, aktörler, kategoriler vb. kendi takdirinize göre seçin.
- Tablo yapısı değiştirilemez. Ancak iyileştirme için önerilerde bulunmanız gerekir. 4. paragrafta sorunlu bir yer belirledik ( tablo alanındaki tabloda yabancı anahtarın olmaması ). Veritabanı yapısında hala bu tür "hatalar" olup olmadığına bakın. Öyleyse, projenin kök dizinine bir benioku dosyası ekleyin ve bu hataları açıklayın.
film_text
film_id
film
Proje analizi: