diff --git a/src/metabase/api/database.clj b/src/metabase/api/database.clj
index e449c7b1919312dd22f972b17c5139a3d81435b5..43a3f17ea3ddff9ef7643c31ee10998ad724964b 100644
--- a/src/metabase/api/database.clj
+++ b/src/metabase/api/database.clj
@@ -1,6 +1,7 @@
 (ns metabase.api.database
   "/api/database endpoints."
-  (:require [clojure.tools.logging :as log]
+  (:require [clojure.string :as s]
+            [clojure.tools.logging :as log]
             [compojure.core :refer [GET POST PUT DELETE]]
             [metabase.api.common :refer :all]
             (metabase [config :as config]
@@ -10,7 +11,7 @@
                       [sample-data :as sample-data]
                       [util :as u])
             (metabase.models common
-                             [database :refer [Database protected-password]]
+                             [database :refer [Database protected-password], :as database]
                              [field :refer [Field]]
                              [hydrate :refer [hydrate]]
                              [table :refer [Table]])))
@@ -200,9 +201,7 @@
   "Get a list of all primary key `Fields` for `Database`."
   [id]
   (read-check Database id)
-  (let [table_ids (db/select-ids Table, :db_id id, :active true)]
-    (sort-by #(:name (:table %)) (-> (db/select Field, :table_id [:in table_ids], :special_type "id")
-                                     (hydrate :table)))))
+  (sort-by (comp s/lower-case :name :table) (hydrate (database/pk-fields {:id id}) :table)))
 
 (defendpoint POST "/:id/sync"
   "Update the metadata for this `Database`."
diff --git a/src/metabase/models/database.clj b/src/metabase/models/database.clj
index 9594ea0c37d248bd2b9019ef51446c78a7ece0bc..c962f307f0fd1c7bf743e3ef30fcc2aa8dff7e36 100644
--- a/src/metabase/models/database.clj
+++ b/src/metabase/models/database.clj
@@ -29,6 +29,14 @@
   [{:keys [id]}]
   (db/select 'Table, :db_id id, :active true, {:order-by [[:display_name :asc]]}))
 
+(defn pk-fields
+  "Return all the primary key `Fields` associated with this DATABASE."
+  [{:keys [id]}]
+  (let [table-ids (db/select-ids 'Table, :db_id id, :active true)]
+    (when (seq table-ids)
+      (db/select 'Field, :table_id [:in table-ids], :special_type "id"))))
+
+
 (u/strict-extend (class Database)
   i/IEntity
   (merge i/IEntityDefaults