Tôi đang sử dụng tập lệnh python để tạo và duy trì cơ sở dữ liệu sqlite cho các chương trình anime mà tôi xem nhằm giúp tôi theo dõi chúng tốt hơn cũng như các tập tôi có và cần xem.
Tôi sử dụng tập lệnh để tạo bảng cho từng bộ, ví dụ: Bleach, Black Lagoon... và lưu trữ thông tin sau trong mỗi bảng:
Bảng dãy:
Season_Num # Số mùa duy nhất
I_Have_Season # có hoặc không để nói rằng tôi có một thư mục cho mùa đó
Season_Episodes # Số lượng tập theo TVDB trong phần đó
Episodes_I_Have # Số tập tôi có cho mùa đó
Việc tạo cùng một bảng cho mỗi chuỗi tôi có và một hàng cho mỗi phần trong chuỗi đó dường như hoạt động tốt.
Bây giờ điều tôi muốn làm là tạo một bảng tóm tắt lấy thông tin từ bảng của mỗi chuỗi và chỉ tạo 1 bảng có tất cả thông tin tôi cần, nó chứa thông tin sau:
Bảng tóm tắt:
Sê-ri # Tên sê-ri duy nhất
Alt_Name # Tên thay thế (Tên bộ truyện bằng tiếng Anh)
Special_Eps # Số lượng tập đặc biệt (Season 0 trong bảng series)
Special_Eps_Me # Số lượng Tập đặc biệt tôi có
Tot_Ses # Tổng số Mùa (không bao gồm mùa 0)
Tot_Ses_Me # Tổng số Mùa có trong cột I_Have_Season
Tot_Episodes # Tổng số tập không bao gồm các tập mùa 0
Tot_Eps_Me # Tổng số tập tôi có không bao gồm các tập mùa 0
Tôi nghĩ những gì tôi muốn làm có thể được thực hiện bằng cách sử dụng trình kích hoạt, nhưng tôi không chắc chắn cách triển khai chúng để bảng tóm tắt tự động cập nhật, chẳng hạn như nếu một phần mới được thêm vào bảng chuỗi hoặc các giá trị của bảng chuỗi được thay đổi.
gia hạn:
Sau khi suy nghĩ và nghiên cứu nhiều hơn, ý tưởng về Chế độ xem thay vì bảng của Fabian nghe có vẻ giống như những gì tôi muốn, nhưng nếu có thể, tôi muốn lưu từng chuỗi riêng lẻ vào bảng riêng để cập nhật, thay vì chỉ một Bảng được trộn lẫn cho mỗi bộ phim và mỗi mùa.
Cập nhật 2:
Tôi đã tiếp tục và cài đặt các trình kích hoạt cho CHÈN, CẬP NHẬT và XÓA, tôi đã thêm chúng vào vòng lặp tạo ban đầu của tập lệnh, sử dụng các biến cho tên bảng và bảng tóm tắt dường như đang cập nhật tốt (sau khi sửa một số lỗi giá trị của vấn đề) đã được tính toán). Tôi sẽ kiểm tra nó thêm và hy vọng nó tiếp tục hoạt động. Bây giờ tôi chỉ cần tập lệnh của mình thêm và xóa bảng cho bộ truyện mới và bộ truyện tôi xóa.
Điều này có thể đạt được bằng cách sử dụng trigger. Nhưng loại điều này thường được thực hiện tốt nhất bằng cách sử dụng Chế độ xem:
例如,
tạo chuỗi bảng (
tên_loạt,
alt_name,
đặc biệt_eps,
đặc biệt_eps_me,
khóa chính(series_name)
);
tạo bảng mùa (
tên_loạt,
mùa_num,
i_have_season,
tập phim,
tập_i_have,
khóa chính (series_name,season_num),
chuỗi tham chiếu khóa ngoại (series_name) (series_name),
kiểm tra (i_have_season trong ('F','T'))
);
tạo chế độ xem mọi thứ_with_counts dưới dạng
chọn tên_sê-ri,
alt_name,
đặc biệt_eps,
đặc biệt_eps_me,
(chọn số(*) từ các phần trong đó Season.series_name = series.series_name) là tot_ses,
(chọn số(*) từ các phần có Season.series_name = series.series_name và i_have_season = 'T') là tot_ses_me,
(chọn tổng(tập) từ các phần trong đó Season.series_name = series.series_name) làm tổng_tập,
(chọn sum(episodes_i_have) từ các phần trong đó Season.series_name = series.series_name và i_have_season = 'T') là tot_epsiodes_me
từ loạt phim;
biên tập
Vì bạn muốn sử dụng thiết kế flip-flop: Giả sử bạn có một bảng chuỗi như thế này:
tạo bảng series_a (
mùa_num,
i_have_season,
tập phim,
tập_i_have
);
tạo bảng series_b (
mùa_num,
i_have_season,
tập phim,
tập_i_have
);
Và cứ thế, bảng tóm tắt của bạn trông như thế này:
tạo bảng tóm tắt (
tên_loạt,
alt_name,
đặc biệt_eps,
đặc biệt_eps_me,
tot_ses,
tot_ses_me,
tot_tập,
tot_episodes_me,
khóa chính (series_name));
Bạn phải tạo ba trình kích hoạt (chèn, cập nhật, xóa) cho mỗi bảng chuỗi, ví dụ:
tạo chuỗi kích hoạt_a_ins sau khi chèn vào chuỗi_a
begin
bộ tóm tắt cập nhật tot_ses = (select count(*) from series_a ),
tot_ses_me = (chọn số(*) từ series_a trong đó i_have_season = 'T'),
tot_episodes = (chọn tổng(tập) từ series_a ),
tot_episodes_me = (chọn tổng(tập_i_have) từ series_a trong đó i_have_season = 'T')
ở đâu series_name = 'a';
end;
/* tạo trigger series_a_upd sau khi cập nhật trên series_a ... */
/* tạo trigger series_a_del sau khi xóa trên series_a ... */
Với phiên bản này, bạn phải thêm các mục tóm tắt vào bảng tóm tắt theo cách thủ công và các bộ đếm sẽ tự động được cập nhật khi bạn sửa đổi bảng series_....
Bạn cũng có thể sử dụng INSERT OR REPLACE ( xem tài liệu ) tạo các mục tóm tắt nếu cần.
Tôi là một lập trình viên xuất sắc, rất giỏi!