diff --git a/store/forms.py b/store/forms.py
index 25703edb29161a1b947c64b5af21ad6452de58a4..7f088a7253409cb6f527a9eedda4f8edf9ae9418 100644
--- a/store/forms.py
+++ b/store/forms.py
@@ -48,6 +48,18 @@ class SearchForm(FlaskForm):
 
 
 class AccessDataForm(FlaskForm):
-    table = SelectField("Table", choices=["Item", "Item Set"])
+    table = SelectField(
+        "Table", choices=["Item", "Item Set"], validators=[validators.DataRequired()]
+    )
     id = IntegerField("ID", [validators.DataRequired()])
     submit = SubmitField("Submit")
+
+
+class AddForm(FlaskForm):
+    table = SelectField(
+        "Table", choices=["Item", "Item Set"], validators=[validators.DataRequired()]
+    )
+    description = StringField("Description", validators=[validators.DataRequired()])
+    # Default value so item set doesn't have validation errors despite not needing it.
+    price = IntegerField(default=0, validators=[validators.DataRequired()])
+    submit = SubmitField("Submit")
diff --git a/store/models.py b/store/models.py
index 06b869cb95456d1241b9cdf471fa9a21a0ea3be1..076efd6f5f7d3ad7804a555cca3d8e3587cb0049 100644
--- a/store/models.py
+++ b/store/models.py
@@ -58,7 +58,6 @@ class ItemSet(db.Model):
 
     id = db.Column(db.Integer, primary_key=True)
     description = db.Column(db.String(256), nullable=False)
-    quantity = db.Column(db.Integer, nullable=False)
     items = db.relationship(
         "Item",
         secondary=itemSets,
@@ -70,6 +69,10 @@ class ItemSet(db.Model):
     def price(self):
         return sum(int(item.price) for item in self.items)
 
+    @property
+    def quantity(self):
+        return len(self.items)
+
     def __repr__(self):
         return f"id: {self.id}, description: {self.description}, items: {self.items}, quantity: {self.price}, price: { self.calculate_price() }"  # TODO: Rename price to quantity
 
diff --git a/store/routes.py b/store/routes.py
index 7e1710311da59ff174dbb60315f60d60cf3a9a54..a8f3b35df73c1b3d084ffb3afac10adc1d7d27ab 100644
--- a/store/routes.py
+++ b/store/routes.py
@@ -362,7 +362,40 @@ def database_management():
     )
 
 
-# 25701, 12522
+@app.route("/database_management_add", methods=["GET", "POST"])
+@login_required
+def database_management_add():
+    if current_user.userType != "admin":
+        flash("Unauthorized access")
+        return redirect(url_for("home"))
+
+    form = AddForm()
+    if form.validate_on_submit():
+        description = form.description.data
+        price = form.price.data
+
+        item = None
+        if form.table.data == "Item":
+            item = Item(description=description, price=price)
+        elif form.table.data == "Item Set":
+            item = ItemSet(description=description)
+        db.session.add(item)
+        db.session.commit()
+
+        access_data_form = AccessDataForm()
+        return render_template(
+            "userContent/database_management.html",
+            access_data_form=access_data_form,
+            main_item=item,
+            is_item=type(item) is Item,
+        )
+
+    return render_template(
+        "userContent/database_management_add.html",
+        form=form,
+    )
+
+
 @app.route("/add_item_to_set", methods=["GET", "POST"])
 def add_item_to_set():
     print("Adding Item", file=sys.stderr)
diff --git a/store/templates/userContent/admin.html b/store/templates/userContent/admin.html
index 1632a25a1e3a468e36006d27e44172a27e929746..35187f877c03846f0c9a72b16db649f42845f9aa 100644
--- a/store/templates/userContent/admin.html
+++ b/store/templates/userContent/admin.html
@@ -6,6 +6,8 @@
 <ul>
     <li><a href="{{ url_for('accountDetails')}}">View my Account details</a></li>
     <li><a href="{{ url_for('view_address')}}">View my shipping address</a></li>
-    <li><a href="{{ url_for('database_management')}}">View database management</a></li>
+    <li><a href="{{ url_for('database_management')}}">Edit existing entries</a></li>
+    <li><a href="{{ url_for('database_management_add')}}">Add new entries</a></li>
+
 </ul>
 {% endblock %}
\ No newline at end of file
diff --git a/store/templates/userContent/database_management.html b/store/templates/userContent/database_management.html
index 8a382d4ccbad7c07aa44b8b91e5f330e5f05575c..1c731139628312a3db62625d6754993fa3eba1ab 100644
--- a/store/templates/userContent/database_management.html
+++ b/store/templates/userContent/database_management.html
@@ -33,7 +33,7 @@
     <button onclick="deleteItemSet({{main_item.id}})">Delete</button>
     {% endif %}
 
-    {% if main_item.items %}
+    {% if not is_item %}
     <div>
         <h1>Items contained in set: </h1>
         <table>
@@ -49,8 +49,8 @@
                 <tr>
                     <td>{{ item['description'] }}</td>
                     <td>£{{ item['price'] }}</td>
+                    <button onclick="deleteItemFromSet({{item.id}}, {{main_item.id}})">Delete</button>
                 </tr>
-                <button onclick="deleteItemFromSet({{item.id}}, {{main_item.id}})">Delete</button>
                 {% endfor %}
             </tbody>
         </table>
diff --git a/store/templates/userContent/database_management_add.html b/store/templates/userContent/database_management_add.html
new file mode 100644
index 0000000000000000000000000000000000000000..1ebfc8a0ad44f8cd446ef927f15ab0358f889916
--- /dev/null
+++ b/store/templates/userContent/database_management_add.html
@@ -0,0 +1,34 @@
+{% from "_formhelpers.html" import render_field %}
+{%extends 'base.html' %}
+{% block title %} Database Management | Antiques Online {% endblock %}
+{% block content %}
+<form method="POST">
+    {{form.hidden_tag()}}
+    <dl>
+        <table>
+            <tr>
+                <td>{{ render_field(form.table) }} </td>
+            </tr>
+            <tr>
+                <td>{{ render_field(form.description) }} </td>
+            </tr>
+            <tr id="price_optional">
+                <td>{{ render_field(form.price) }} </td>
+            </tr>
+            </div>
+        </table>
+    </dl>
+    <br>
+    {{form.submit()}}
+    <br>
+</form>
+
+<script>
+    $(document).ready(function () {
+        $('#table').change(function () {
+            $('#price_optional').toggle();
+        });
+    });
+</script>
+
+{% endblock %}
\ No newline at end of file