Gerçekten 3'ten fazla tablo kullanmamanız gerekiyor mu? Normalization normal olarak normalize edilmemiş bir modeli birçok normalize ilişkide parçalamayı ima eder.
fazla 3 tablolar olabilir ise, (3NF olarak), aşağıdaki düşünebilir: []
içinde
Players: ([player_id], name, date_of_birth, ...)
Batters: ([batter_id], player_id)
Pitchers: ([pitcher_id], player_id)
Batting_Stats: ([batter_id, time_dimension], stat_1, stat_2, ...)
Pitching_Stats: ([pitcher_id, time_dimension], stat_1, stat_2, ...)
özellikler Birincil anahtar tanımlamak, fakat tercih edilen ise, bir surrogate key kullanılabilmektedir. Batters and Pitches'teki player_id
özniteliği unique constraint olmalıdır ve ayrıca Oyuncular ilişkisine bir foreign key olmalıdır. Batting_Stats ve Pitching_Stats ayrıca, Batters ve Pitching için yabancı bir tuşa sahip olmalıdır. Bununla birlikte, yukarıdakilerin bir oyuncunun sadece bir meyilli olabileceği veya sadece bir sürahi olabileceğini göz önünde bulundurmadığına dikkat ediniz.
GÜNCELLEME:
bir yöntemi ben, bir oyuncu sadece bir hamur veya yalnızca sürahi olduğunu uygulamak farkındayım bu model geçer:
Players: ([player_id], name, date_of_birth, ...)
Roles: ([role_id, role_type], player_id)
Batting_Stats: ([role_id, role_type, time_dimension], stat_1, stat_2, ...)
Pitching_Stats: ([role_id, role_type, time_dimension], stat_1, stat_2, ...)
role_type
gerektiği Bir sürahi veya bir meyilli tanımlayın. Batting_Stats ve Pitching_Stats, (role_id, role_type)
kullanarak Roller'e bileşik bir yabancı anahtar içermelidir. Roller'de player_id
üzerinde benzersiz bir kısıtlama, bir oyuncunun yalnızca bir ve yalnızca bir rolü olabileceğini garanti eder. Son olarak check constraints'u ekleyin, böylece Batting_Stats.role_type = 'Batter'
ve Pitching_Stats.role_type = 'Pitcher'
. Bu kontrol kısıtlaması, Batting_Stats'ın her zaman bir hamuru tanımladığını ve bir sürahi olduğunu garanti eder. Aynı Pitching_Stats için de geçerlidir.
Çözümünüz zaten var. Sorunuzda açıklandığı gibi üç tabloyu, aşağıda Steven A. Lowe tarafından açıklanan tuşlarla kullanın. İstatistik tablolarınızda daha fazla normalleştirme sorunlarınız olabilir. Ancak, istatistikler ve istatistikler arasındaki ilişkiyi doğru bir şekilde modellediniz. –
@Steven, Sürahi pervanelerini (NL ve interleague oyunlarında) kabul ediyorum, fakat bu bir fantezi beyzbol taslak aracı ve sürahi oyuncularının vuruş istatistikleri için geçerli değil. –