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:
filmve tabloları arasındaki ilişki ,
film_textaçık bir OneToOne ilişkisidir çünkü tablonun
film_textbir alanı vardır
film_id.OLUMSUZbir tablodan bir kimliği ifade eder
film(yabancı anahtar yok). Ancak isme ve mantığa göre bu bağlantı olmalıdır. Ek olarak, tabloda
film_textalan ,
film_idbir "filmin" birden fazla "film metnine" karşılık gelmemesini garanti eden birincil anahtar görevi görür.
- Şimdi tablolara bakalım
filmve
category. 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ır
film_category. Yukarıdakilerin hepsine dayanarak, bu açık bir ManyToMany ilişkisidir .
- Tablolara bakıyoruz
filmve
language. 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 olursak
film, 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
rentalsü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: