圖片數據庫由兩個表組成,分別是 images 和 thumbnails,物理數據模型以下所示(Power Designer 逆向工程生成)html
Note: 如何數據庫物理模型圖:<pk> 表示此爲主鍵。其他的表名、字段名、數據類型應該都能看明白。android
Note: SQLite 從 3.6.19 版纔開始支持外鍵約束,Android 2.3.3 使用的是 3.7.x,但並無使用此特性,而是經過操做數據庫的程序(如 MediaScanner)以及觸發器來維護數據庫的一致性。這裏能夠了解 SQLite 的外鍵支持狀況git
數據表字段解析以下:sql
images:圖片信息 數據庫
字段 | 解析 |
---|---|
_id | 主鍵。圖片 id,從 1 開始自增 |
_data | 圖片絕對路徑 |
_size | 文件大小,單位爲 byte |
_display_name | 文件名 |
mime_type | 相似於 image/jpeg 的 MIME 類型 |
title | 不帶擴展名的文件名 |
date_added | 添加到數據庫的時間,單位秒 |
date_modified | 文件最後修改時間,單位秒 |
description | |
picasa_id | 用於 picasa 網絡相冊 |
isprivate | |
latitude | 緯度,須要照片有 GPS 信息 |
longitude | 經度,須要照片有 GPS 信息 |
datetaken | 取自 EXIF 照片拍攝時間,若爲空則等於文件修改時間,單位毫秒 |
orientation | 取自 EXIF 旋轉角度,在圖庫旋轉圖片也會改變此值 |
mini_thumb_magic | 取小縮略圖時生成的一個隨機數,見 MediaThumbRequest |
bucket_id | 等於 path.toLowerCase.hashCode(),見 MediaProvider.computeBucketValues() |
bucket_display_name | 直接包含圖片的文件夾就是該圖片的 bucket,就是文件夾名 |
thumbnails:縮略圖 緩存
字段 | 解析 |
---|---|
_id | 主鍵。縮略圖 id,從 1 開始自增 |
_data | 圖片絕對路徑 |
image_id | 縮略圖所對應圖片的 id,依賴於 images 表 _id 字段,可創建外鍵 |
kind | 縮略圖類型,1 是大縮略圖,2 基本不用,3 是微型縮略圖但其信息不保存在數據庫 |
width | 縮略圖寬度 |
height | 縮略圖高度 |
數據表字段解析以下:網絡
video:視頻信息 composer
字段 | 解析 |
---|---|
_id | 主鍵。視頻 id |
_data | 視頻絕對路徑 |
_display_name | 文件名 |
_size | 文件大小,單位爲 byte |
mime_type | 相似於 video/avi 的 MIME 類型 |
date_added | 添加到數據庫的時間,單位秒 |
date_modified | 文件最後修改時間,單位秒 |
title | 不帶擴展名的文件名 |
duration | 視頻時長,單位毫秒 |
artist | 藝術家 |
album | 專輯名,通常爲文件夾名 |
resolution | |
description | |
isprivate | |
tags | |
category | |
language | |
mini_thumb_data | |
latitude | |
longitude | |
datetaken | |
mini_thumb_magic | 取小縮略圖時生成的一個隨機數,見 MediaThumbRequest |
bucket_id | 等於 path.toLowerCase.hashCode(),見 MediaProvider.computeBucketValues() |
bucket_display_name | 直接包含視頻的文件夾就是該圖片的 bucket,就是文件夾名 |
bookmark |
videothumbnails:視頻縮略圖 數據庫設計
字段 | 解析 |
---|---|
_id | 主鍵。縮略圖 id |
_data | 縮略圖絕對路徑 |
video_id | 縮略圖所對應視頻的 id,依賴於 video 表 _id 字段 |
kind | 縮略圖類型,1 是大圖,視頻只能取類型 1 |
width | 縮略圖寬度 |
height | 縮略圖高度 |
音頻數據庫是最複雜的,由 10 個表組成。物理數據模型以下所示:ide
album_art:專輯封面
字段 | 解析 |
---|---|
album_id | 主鍵。專輯 id |
_data | 專輯封面緩存的路徑 |
albums:專輯信息
字段 | 解析 |
---|---|
album_id | 主鍵。專輯 id |
album_key | 全大寫字母,用於字母索引 |
album | 專輯名 |
android_metadata:當前字符編碼
字段 | 解析 |
---|---|
locale | 默認字符編碼,例如 zh_CN |
artists:藝術家
字段 | 解析 |
---|---|
artist_id | 主鍵。藝術家 id |
artist_key | 全大寫字母,用於字母索引 |
artist | 藝術家 |
audio_genres:流派
字段 | 解析 |
---|---|
_id | 主鍵。流派 id |
name | 流派名稱 |
audio_genres_map:音頻流派映射
字段 | 解析 |
---|---|
_id | 主鍵。映射 id |
audio_id | 音頻 id |
genre_id | 流派 id |
Note: 爲什麼要創建映射表:爲了消除數據冗餘。假若有大量音頻屬於同一流派,若是沒有映射表則須要每一個音頻都須要記錄一樣的流派數據,有了映射表以後則只有一條記錄就夠了。這符合數據庫設計的第三範式(the 3rd normal form)
audio_meta:音頻信息
字段 | 解析 |
---|---|
_id | 主鍵。音頻 id |
_data | 文件絕對路徑 |
_display_name | 文件名 |
_size | 文件大小,單位 byte |
mime_type | 相似於 audio/mpeg 的 MIME 類型 |
date_added | 添加到數據庫的時間,單位秒 |
date_modified | 文件最後修改時間,單位秒 |
title | 來自 ID3 信息的標題,無則爲不帶擴展名的文件名 |
title_key | 全大寫字母的標題 |
duration | 時長 |
artist_id | 藝術家 id |
composer | 來自 ID3 信息,做曲家 |
album_id | 專輯 id |
track | 來自 ID3 信息,音軌 |
year | 來自 ID3 信息,年代 |
is_ringtone | 是否鈴聲,0 或 1 |
is_music | 是否音樂,1 纔會在音樂播放器顯示 |
is_alarm | 是否鬧鐘鈴聲 |
is_notification | 是否通知鈴聲 |
is_podcast | 是否 podcast |
bookmark |
audio_playlists:播放列表
字段 | 解析 |
---|---|
_id | 主鍵。播放列表 id |
_data | |
name | 播放列表名 |
date_added | |
date_modified |
audio_playlists_map:音頻播放列表映射
字段 | 解析 |
---|---|
_id | 主鍵。映射 id |
audio_id | 音頻 id |
playlist_id | 播放列表 id |
play_order | 播放順序 |