code: def test_normalize_dataframe():
      df = pd.DataFrame(
          {
              "id": range(4),
              "full_name": [
                  "Mr. John Doe",
                  "Doe, Mrs. Jane",
                  "James Brown",
                  "Ms. Paige Turner",
              ],
              "email": [
                  "john.smith@example.com",
                  np.nan,
                  "team@featuretools.com",
                  "junk@example.com",
              ],
              "phone_number": [
                  "5555555555",
                  "555-555-5555",
                  "1-(555)-555-5555",
                  "555-555-5555",
              ],
              "age": pd.Series([33, None, 33, 57], dtype="Int64"),
              "signup_date": [pd.to_datetime("2020-09-01")] * 4,
              "is_registered": pd.Series(
                  [True, False, True, None], dtype="boolean"
              ),
          },
      )
  
      df.ww.init(
          name="first_table", index="id", time_index="signup_date"
      )
      es = EntitySet("es")
      es.add_dataframe(df)
      es.normalize_dataframe(
          "first_table",
          "second_table",
          "age",
          additional_columns=["phone_number", "full_name"],
          make_time_index=True,
      )
      assert len(es.dataframe_dict) == 2
      assert "foreign_key" in es["first_table"].ww.semantic_tags["age"]
  
imports: from datetime import datetime
  import numpy
  import pandas
  import pytest
  from woodwork.exceptions import TypeConversionError
  from woodwork.logical_types import Boolean, Categorical, Datetime, Double, Integer, NaturalLanguage
  from featuretools.entityset.entityset import LTI_COLUMN_NAME, EntitySet
  from featuretools.tests.testing_utils import to_pandas
  from featuretools.utils.gen_utils import Library, import_or_none, is_instance
label_desc: Use image node_id 20 for calling a global function with example usage: test_normalize_dataframe() without return types