Sakila 範例資料庫  /  Sakila 變更歷史

11 Sakila 變更歷史

本節描述 Sakila 範例資料庫各版本中所做的變更。

版本 1.5

  • 修正了 MySQL Bug #112552:address 欄位中缺少了帶重音符號的字元。

版本 1.4

  • 修正了 MySQL Bug #112131:使 film_text.film_id 欄位為無號整數,以符合其他 film_id 的定義。

  • film_list 和 nicer_but_slower_film_list 檢視表不會傳回沒有演員的影片。

版本 1.3

  • 修正了 MySQL Bug #106951:citycountry 欄位中缺少了帶重音符號的字元;它們的值已使用 world 資料庫更新。此外,也缺少了銳音符號字元本身。

  • 修正了 MySQL Bug #107158:移除了 payment 資料表中 rental_id 值為 Null 的五列。

版本 1.2

  • 資料庫物件現在使用 utf8mb4 而不是 utf8。此變更在 MySQL 5.6 中針對宣告為 VARCHAR(255)film.title 欄位造成了 Specified key was too long; max key length is 767 bytes 錯誤。實際的最大標題長度為 27 個字元,因此將該欄位重新宣告為 VARCHAR(128) 以避免超過最大索引鍵長度。

  • sakila-schema.sqlsakila-data.sql 包含 SET NAMES utf8mb4 陳述式。

  • sakila-data.sql 已從 DOS (CRLF) 行尾轉換為 Unix (LF) 行尾。

  • address.location 欄位是一個具有 SPATIAL 索引的 GEOMETRY 欄位。從 MySQL 8.0.3 開始,除非索引空間欄位具有 SRID 屬性,否則會忽略 SPATIAL 索引。location 欄位已變更為針對 MySQL 8.0.3 和更新版本包含 SRID 0 屬性。

  • staff.password 欄位宣告為 VARCHAR(40) BINARY。這是在字元欄位宣告中使用 BINARY 作為指定 _bin 定序的簡寫,自 MySQL 8.0.17 起已棄用。該欄位已重新宣告為 BINARY 的簡寫,即 VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

  • rewards_report() 預存程序中,min_dollar_amount_purchased 參數宣告為 DECIMAL(10,2) UNSIGNED。從 MySQL 8.0.17 起,將 UNSIGNEDDECIMAL 搭配使用已遭棄用。該參數已重新宣告為不含 UNSIGNED

  • film_in_stock()film_not_in_stock() 預存程序使用了 FOUND_ROWS() 函數,此函數自 MySQL 8.0.17 起已遭棄用。在每個程序中,FOUND_ROWS() 查詢已由使用 COUNT(*) 的查詢取代,其中具有與其相關聯的查詢相同的 FROMWHERE 子句。這比使用 FOUND_ROWS() 更耗費資源,但會產生相同的結果。

  • 在 MySQL 5.6.10 之前,film_text 資料表使用 MyISAM 而非 InnoDB,以避免在舊版本中發生資料表建立失敗。(但是,我們仍然建議升級到 MySQL 5.6.10 或更高版本。)

  • MySQL Workbench 的 sakila.mwb 檔案已根據上述變更進行更新。

版本 1.1

  • 移除了所有 MyISAM 參考。film_text 資料表及其 FULLTEXT 定義現在使用 InnoDB。如果您使用較舊的 MySQL 伺服器版本 (5.6.10 和更低版本),我們建議您升級 MySQL。如果您無法升級,請將 sakila-schema.sql SQL 檔案中 film_text 資料表的 ENGINE 值變更為 MyISAM

版本 1.0

  • 透過使用 MySQL 版本特定的註解,將 sakila-schema.sqlsakila-spatial-schema.sql 合併為單一檔案。

    從 MySQL 伺服器 5.7.5 開始(當空間索引支援新增至 InnoDB 時),空間資料 (例如 address.location) 會插入到 sakila 資料庫中。此外,從 MySQL 伺服器 5.6.10 開始使用 InnoDB 全文搜尋,而之前使用的是 MyISAM

版本 0.9

  • 新增了包含具有幾何資料類型的空間資料的 Sakila 範例資料庫的另一個副本。這可作為個別下載使用,並且需要 MySQL 伺服器 5.7.5 或更新版本。若要使用此資料庫,請載入 sakila-spatial-schema.sql 檔案,而不是 sakila-schema.sql 檔案。

  • 修改了 nicer_but_slower_film_listfilm_list 檢視表定義的 GROUP BY 子句,使其與 ONLY_FULL_GROUP_BY SQL 模式相容,此模式從 MySQL 5.7.5 開始預設為啟用。

版本 0.8

  • 修正了 upd_film 觸發程序定義,使其包含對 film_id 值的變更。

  • 新增了 actor_info 檢視表。

  • 變更了 inventory_held_by_customer 函數的錯誤處理常式。函數現在針對 NOT FOUND 具有退出處理常式,而不是較為隱晦的 1329

  • 在結構描述和資料檔案中新增了新 BSD 授權的範本。

  • READS SQL DATA 新增到適當的預存程序和函數中,以支援在 MySQL 5.1 上載入。

  • 修正了 rewards_report 程序中的日期範圍問題(感謝 Goplat)。

版本 0.7

  • 修正了 sales_by_store 檢視表中的錯誤,該錯誤導致每個商店都列出相同的管理員。

  • 修正了 inventory_held_by_customer 函數中的錯誤,該錯誤導致函數傳回多列。

  • rental_date 觸發程序移動到 sakila-data.sql 檔案,以防止其干擾資料載入。

版本 0.6

  • 新增了 film_in_stock 預存程序。

  • 新增了 film_not_in_stock 預存程序。

  • 新增了 inventory_help_by_customer 預存函數。

  • 新增了 inventory__in_stock 預存函數。

  • 最佳化了用於載入的資料檔案(多列 INSERT 陳述式、交易)。(感謝 Giuseppe)

  • 修正了 payment 資料表載入指令碼中的錯誤,該錯誤導致付款金額無限增加。

版本 0.5

  • 新增了 Jay Pipes 提交的 sales_by_storesales_by_film_category 檢視表。

  • 新增了 Jay Pipes 提交的 rewards_report 預存程序。

  • 新增了 get_customer_balance 預存程序。

  • 新增了 sakila-data.sql 檔案,以便將資料載入到範例資料庫中。

版本 0.4

  • password 欄位新增到 staff 資料表 (VARCHAR(40) BINARY DEFAULT NULL)。

版本 0.3

  • address.district 變更為 VARCHAR(20)

  • customer.first_name 變更為 VARCHAR(45)

  • customer.last_name 變更為 VARCHAR(45)

  • customer.email 變更為 VARCHAR(50)

  • 新增了 payment.rental_id 欄位(一個 INT NULL 欄位)。

  • payment.rental_id 新增了到 rental.rental_id 的外部索引鍵。

  • 新增了 rental.rental_idINT Auto_Increment,使其成為代理主索引鍵,舊的主索引鍵變更為 UNIQUE 索引鍵。

版本 0.2

  • 所有資料表都有具有傳統行為的 last_update TIMESTAMP 欄位 (DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)。

  • actor_id 現在是 SMALLINT

  • address_id 現在是 SMALLINT

  • category_id 現在是 TINYINT

  • city_id 現在是 SMALLINT

  • country_id 現在是 SMALLINT

  • customer_id 現在是 SMALLINT

  • customer 資料表的 first_namelast_name 現在是 CHAR 而不是 VARCHAR

  • customer 資料表現在具有 email CHAR(50)

  • customer 資料表上的 create_date 現在是 DATETIME(以容納 last_update TIMESTAMP)。

  • customer 資料表有一個新的 ON INSERT 觸發程序,用於強制將 create_date 欄位設定為 NOW()

  • film_id 現在是 SMALLINT

  • film.description 現在具有 DEFAULT NULL

  • film.release_year 新增,類型為 YEAR

  • 新增 film.language_idfilm.original_language_id,以及 language 資料表。適用於可能帶有字幕的外語電影。original_language_id 可以為 NULL,而 language_id 則為 NOT NULL

  • film.length 現在為 SMALLINT

  • 移除 film.category_id 欄位。

  • 新增資料表:film_category;允許每部電影有多個類別。

  • 移除 film_text.category_id 欄位。

  • inventory_id 現在為 MEDIUMINT

  • payment_id 現在為 SMALLINT

  • payment.payment_date 現在為 DATETIME

  • payment 資料表中新增觸發器,以強制在 INSERT 時將 payment_date 設定為 NOW()

  • rental.rent_date 現在為 rental.rental_date,並且現在為 DATETIME

  • rental 資料表中新增觸發器,以強制在 INSERT 時將 rental_date 設定為 NOW()

  • staff_id 現在為 TINYINT

  • 新增 staff.email (VARCHAR(50))。

  • 新增 staff.username (VARCHAR(16))。

  • store_id 現在為 TINYINT

  • 更新 film_list 視圖以處理新的 film_category 資料表。

  • 更新 nicer_but_slower_film_list 視圖以處理新的 film_category 資料表。